6.5.7 Синтаксис оператора CREATE INDEX
CREATE [UNIQUE|FULLTEXT] INDEX index_name
ON tbl_name (col_name[(length)],... )
Команда CREATE INDEX
в версиях MySQL до 3.22 не выполняет никаких
действий. В версии 3.22 и более поздних CREATE INDEX
соответствует
команде ALTER TABLE
в части создания индексов. See section 6.5.4 Синтаксис оператора ALTER TABLE
.
Обычно все индексы создаются в таблице во время создания самой таблицы
командой CREATE TABLE
. See section 6.5.3 Синтаксис оператора CREATE TABLE
. CREATE INDEX
дает
возможность добавить индексы к существующим таблицам.
Список столбцов в форме (col1,col2,...)
создает индекс для нескольких
столбцов. Величины индексов формируются путем конкатенации величин
указанных столбцов.
Для столбцов типов CHAR
и VARCHAR
с помощью параметра
col_name(length)
могут создаваться индексы, для которых используется только
часть столбца (для столбцов BLOB
и TEXT
нужно указывать длину). Команда,
приведенная ниже, создает индекс, используя первые 10 символов столбца
name:
mysql> CREATE INDEX part_of_name ON customer (name(10));
Поскольку большинство имен обычно имеют отличия друг от друга в первых 10
символах, данный индекс не должен быть намного медленнее, чем созданный из
столбца name целиком. Кроме того, используя неполные столбцы для индексов,
можно сделать файл индексов намного меньше, а это позволяет сэкономить
место на диске и к тому же повысить скорость операций INSERT
!
Следует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц
типа MyISAM
можно добавлять индекс только для столбцов, которые могут
принимать величины NULL
или для столбцов BLOB/TEXT
.
Чтобы получить более подробную информацию о том, как MySQL
использует
индексы, See section 5.4.3 Использование индексов в MySQL.
С помощью опции FULLTEXT
можно индексировать только столбцы VARCHAR
и TEXT
и только в таблицах MyISAM
. Эта возможность доступна только в версии MySQL
3.23.23 и выше. See section 6.8 Полнотекстовый поиск в MySQL.