Spec-Zone .ru
спецификации, руководства, описания, API

13.1.13. CREATE INDEX Синтаксис

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name    [index_type]    ON tbl_name (index_col_name,...)    [algorithm_option | lock_option] ...index_col_name:    col_name [(length)] [ASC | DESC]index_type:    USING {BTREE | HASH}index_option:    KEY_BLOCK_SIZE [=] value  | index_type  | WITH PARSER parser_name  | COMMENT 'string'algorithm_option:    ALGORITHM [=] {DEFAULT|INPLACE|COPY}lock_option:    LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}

CREATE INDEX отображается на ALTER TABLE оператор, чтобы создать индексирует. См. Раздел 13.1.7,"ALTER TABLE Синтаксис". CREATE INDEX не может использоваться, чтобы создать a PRIMARY KEY; использовать ALTER TABLE вместо этого. Для получения дополнительной информации об индексирует, см. Раздел 8.3.1, "Использование MySQL How Индексирует".

Обычно, Вы создаете, все индексирует на таблице в то время, когда таблица составляется с CREATE TABLE. См. Раздел 13.1.17,"CREATE TABLE Синтаксис". Эта направляющая линия особенно важна для InnoDB таблицы, где первичный ключ определяет физическое расположение строк в файле данных. CREATE INDEX включает Вы, чтобы добавить индексируете к существующим таблицам.

Список столбцов формы (col1,col2,...) создает многократный столбец, индексируют. Индексируйте значения ключа, формируются, связывая значения данных столбцов.

Индексирует может быть создан, которые используют только ведущую роль значений столбцов, используя col_name(length) синтаксис, чтобы определить индексировать длину префикса:

Оператор, показанный здесь, создает индексировать использование первых 10 символов name столбец:

CREATE INDEX part_of_name ON customer (name(10));

Если имена в столбце обычно отличаются по первым 10 символам, это индексирует, не должно быть намного медленнее чем индексирование создаваемого изо всего name столбец. Кроме того, использование префиксов столбца для индексирует, может сделать индексный файл намного меньшим, который мог сохранить большое дисковое пространство и мог бы также убыстриться INSERT операции.

Префиксная поддержка и длины префиксов (где поддерживающийся) являются зависимым механизмом хранения. Например, префикс может составить до 1000 байтов, жаждут MyISAM таблицы, и 767 байтов для InnoDB таблицы.

Отметить

Префиксные пределы измеряются в байтах, тогда как длина префикса в CREATE INDEX операторы интерпретируются как число символов для недвоичных типов данных (CHAR, VARCHAR, TEXT). Примите это во внимание, определяя длину префикса для столбца, который использует многобайтовый набор символов.

A UNIQUE индексируйте создает ограничение так, что, все значения в индексировании должны быть отличными. Ошибка происходит, если Вы пытаетесь добавить новую строку со значением ключа, которое соответствует существующую строку. Для всех механизмов, a UNIQUE индексируйте многократные разрешения NULL значения для столбцов, которые могут содержать NULL. Если Вы определяете префиксное значение для столбца в a UNIQUE индексируйте, значения столбцов должны быть уникальными в пределах префикса.

FULLTEXT индексирует поддерживаются только для InnoDB и MyISAM таблицы и могут включать только CHAR, VARCHAR, и TEXT столбцы. Индексация всегда происходит по всему столбцу; индексация префикса столбца не поддерживается, и любая длина префикса игнорируется если определено. См. Раздел 12.9, "Полнотекстовые Функции Поиска", для деталей работы.

MyISAM, InnoDB, NDB, и ARCHIVE механизмы хранения поддерживают пространственные столбцы такой как (POINT и GEOMETRY. (Раздел 12.18, "Пространственные Расширения", описывает пространственные типы данных.) Однако, поддержка пространственной индексации столбца изменяется среди механизмов. Пространственный и непространственный индексирует, доступны согласно следующим правилам.

Пространственный индексирует (создаваемое использование SPATIAL INDEX) имейте эти характеристики:

Характеристики непространственных индексируют (создаваемый с INDEX, UNIQUE, или PRIMARY KEY):

В MySQL 5.6:

index_col_name спецификация может закончиться ASC или DESC. Эти ключевые слова разрешаются для будущих расширений для того, чтобы определить, что возрастание или убывание индексируют хранение значения. В настоящий момент они анализируются, но игнорируются; индексируйте значения, всегда сохранены в порядке возрастания.

После индексировать списка столбцов индексируйте опции, может быть дан. index_option значение может быть любым следующим:

С MySQL 5.6.6, ALGORITHM и LOCK пункты могут быть даны. Они влияют на табличный метод копирования и уровень параллелизма для чтения и записи таблицы, в то время как индексирует, изменяются. У них есть то же самое значение что касается ALTER TABLE оператор. Для получения дополнительной информации см. Раздел 13.1.7,"ALTER TABLE Синтаксис"