CREATE INDEX
Описание
Создаёт новый индекс для таблицы. Необходимо указать имя таблицы и имя индекса. Дополнительно можно указать тип индекса, свойства и комментарии.
Синтаксис
CREATE INDEX [IF NOT EXISTS] <index_name>
ON <table_name> (<column_name> [, ...])
[USING {INVERTED | NGRAM_BF | ANN}]
[PROPERTIES ("<key>" = "<value>"[ , ...])]
[COMMENT '<index_comment>']
Обязательные параметры
1. <index_name>
Задаёт идентификатор (то есть имя) индекса, который должен быть уникальным в пределах таблицы.
Идентификатор должен начинаться с буквы (если включена поддержка имён Unicode, это может быть любой символ любого языка) и не может содержать пробелы или специальные символы, если только вся строка идентификатора не заключена в обратные кавычки (например,
My Object).Идентификатор не может быть зарезервированным ключевым словом.
Подробности см. в требованиях к идентификаторам и зарезервированным ключевым словам.
2. <table_name>
Задаёт идентификатор (то есть имя) таблицы, который должен быть уникальным в пределах базы данных.
Идентификатор должен начинаться с буквы (если включена поддержка имён Unicode, это может быть любой символ любого языка) и не может содержать пробелы или специальные символы, если только вся строка идентификатора не заключена в обратные кавычки (например,
My Object).Идентификатор не может быть зарезервированным ключевым словом.
Подробности см. в требованиях к идентификаторам и зарезервированным ключевым словам.
3. <column_name> [, ...]
Задаёт столбцы, для которых создаётся индекс (в настоящее время поддерживается только один столбец). Столбец должен быть уникальным в пределах таблицы.
Идентификатор должен начинаться с буквы (если включена поддержка имён Unicode, это может быть любой символ любого языка) и не может содержать пробелы или специальные символы, если только вся строка идентификатора не заключена в обратные кавычки (например,
My Object).Идентификатор не может быть зарезервированным ключевым словом.
Подробности см. в требованиях к идентификаторам и зарезервированным ключевым словам.
Необязательные параметры
1. USING {INVERTED | NGRAM_BF}
Задаёт тип индекса. В настоящее время поддерживаются два типа: INVERTED (инвертированный индекс) и NGRAM_BF (индекс ngram bloomfilter).
2. PROPERTIES ("<key>" = "<value>"[ , ...])
Задаёт параметры индекса в стандартном формате PROPERTIES. Поддерживаемые параметры и их назначение описаны в документации по соответствующему типу индекса.
3. COMMENT '<index_comment>'
Задаёт комментарий к индексу для упрощения его сопровождения.
Требования к правам доступа
Пользователь, выполняющий эту команду SQL, должен обладать как минимум следующими правами:
| Привилегия | Объект | Примечания |
|---|---|---|
| ALTER_PRIV | Таблица | CREATE INDEX считается операцией ALTER над таблицей |
Примечания по использованию
- Инвертированный индекс INVERTED сразу применяется к новым данным. Для ранее добавленных данных индекс необходимо построить с помощью операции BUILD INDEX.
- После создания индекса NGram BloomFilter NGRAM_BF для завершения его построения в фоновом режиме выполняется изменение схемы для всех данных. Ход выполнения можно проверить с помощью SHOW ALTER TABLE COLUMN.
Примеры
-
Создать инвертированный индекс
index1для таблицыtable1CREATE INDEX index1 ON table1(col1) USING INVERTED; -
Создать индекс NGram BloomFilter
index2для таблицыtable1CREATE INDEX index2 ON table1(col1) USING NGRAM_BF PROPERTIES("gram_size"="3", "bf_size"="1024"); -
Создать индекс ANN
index3в таблицеtable1для векторного столбца (embedding).CREATE INDEX index3 ON table1 (`embedding`) USING ANN PROPERTIES(
"index_type"="hnsw",
"metric_type"="l2_distance",
"dim"="128"
);