INDEX

Конструкция INDEX используется для определения вторичного индекса для строковых таблиц:

CREATE TABLE `<table_name>` (
  ...
    INDEX `<index_name>`
    [GLOBAL|LOCAL]
    [UNIQUE]
    [SYNC|ASYNC]
    [USING <index_type>]
    ON ( <index_columns> )
    [COVER ( <cover_columns> )]
    [WITH ( <parameter_name> = <parameter_value>[, ...])]
  [,   ...]
)

где:

  • GLOBAL/LOCAL — глобальный или локальный индекс, в зависимости от типа индекса (<index_type>) может быть доступен только один из них:

    • GLOBAL — индекс, реализованный в виде отдельной таблицы или набора таблиц. Синхронное обновление такого индекса требует распределённых транзакций.
    • LOCAL — локальный индекс в рамках шарда колоночной или строковой таблицы, не требует распределённых транзакций при обновлении, однако не обеспечивает прюнинг при поиске.
  • <index_name> — уникальное имя индекса, по которому будет возможно обращение к данным.

  • SYNC/ASYNC — признак синхронности индекса.

  • UNIQUE — признак уникального вторичного индекса. Уникальный индекс должен быть глобальным синхронным (GLOBAL UNIQUE SYNC) и не должен содержать конструкцию USING <index_type>.

  • <index_type> - тип индекса, в настоящее время поддерживаются:

    • secondary — вторичный индекс. Для вторичных индексов доступен только режим GLOBAL. Это тип индекса по умолчанию.
    • vector_kmeans_tree — векторный индекс. Подробнее описан в разделе Векторный индекс.
    • fulltext_plain — базовый полнотекстовый индекс. Подробнее описан в Полнотекстовый индекс.
    • fulltext_relevance — полнотекстовый индекс со статистикой BM25 для расчёта релевантности. Подробнее описан в Полнотекстовый индекс.
    • json — JSON-индекс для ускорения предикатов JSON_EXISTS и JSON_VALUE по колонке типа Json или JsonDocument. Подробнее описан в JSON-индекс.
    • bloom_filter — локальный Блум-индекс. Доступен только LOCAL. См. ALTER TABLE ADD INDEX.
    • bloom_ngram_filter — локальный N-граммный Блум-индекс. Доступен только LOCAL. См. ALTER TABLE ADD INDEX.
    • min_max — локальный min/max-индекс. Доступен только LOCAL. См. ALTER TABLE ADD INDEX.
  • <index_columns> — список имён колонок создаваемой таблицы через запятую, по которому определяется состав и порядок включения колонок в ключ индекса. Обязательно должен быть указан. Ключ индекса будет состоять из этих колонок с добавлением колонок первичного ключа таблицы.

  • <cover_columns> — список имён колонок создаваемой таблицы через запятую, которые будут сохранены в индексе дополнительно к колонкам ключа индекса, давая возможность получить дополнительные данные без обращения за ними в таблицу. По умолчанию пуст.

  • <parameter_name> и <parameter_value> — параметры индекса, специфичные для конкретного <index_type>. Некоторые параметры индекса нельзя задать при его создании. См. Изменение параметров индекса.

Пример

CREATE TABLE my_table (
    a Uint64,
    b Bool,
    c Utf8,
    d Date,
    INDEX idx_d GLOBAL ON (d),
    INDEX idx_ba GLOBAL ASYNC ON (b, a) COVER (c),
    INDEX idx_uniq GLOBAL UNIQUE SYNC ON (c),
    PRIMARY KEY (a)
)
Предыдущая
Следующая