Перейти к содержимому
Последнее обновление

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 для таблицы table1

    CREATE INDEX index1 ON table1(col1) USING INVERTED;
  • Создать индекс NGram BloomFilter index2 для таблицы table1

    CREATE 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"
    );