---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/create_table/secondary_index.md?version=main
  - https://ydb.tech/docs/ru/yql/reference/syntax/create_table/secondary_index.md?version=main
sourcePath: ru/core/yql/reference/syntax/create_table/secondary_index.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# INDEX

Конструкция `INDEX` используется для определения [вторичного индекса](https://ydb.tech/docs/ru/concepts/query_execution/secondary_indexes.md?version=main) для [строковых](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=main#row-oriented-tables) таблиц:

```yql
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>[, ...])]
  [,   ...]
)
```

где:

<!-- source: ru/yql/reference/syntax/_includes/index_grammar_explanation.md -->
* `GLOBAL/LOCAL` — глобальный или локальный индекс, в зависимости от типа индекса (`<index_type>`) может быть доступен только один из них:

    * `GLOBAL` — индекс, реализованный в виде отдельной таблицы или набора таблиц. Синхронное обновление такого индекса требует распределённых транзакций.
    * `LOCAL` — локальный индекс в рамках шарда колоночной или строковой таблицы, не требует распределённых транзакций при обновлении, однако не обеспечивает прюнинг при поиске.

* `<index_name>` — уникальное имя индекса, по которому будет возможно обращение к данным.
* `SYNC/ASYNC` — признак синхронности индекса.

    * `SYNC` - [синхронный](https://ydb.tech/docs/ru/concepts/query_execution/secondary_indexes.md?version=main#sync) индекс. Значение по умолчанию.
    * `ASYNC` - [асинхронный](https://ydb.tech/docs/ru/concepts/query_execution/secondary_indexes.md?version=main#async) индекс.

* `UNIQUE` — признак [уникального вторичного индекса](https://ydb.tech/docs/ru/concepts/query_execution/secondary_indexes.md?version=main#unique). Уникальный индекс должен быть глобальным синхронным (`GLOBAL UNIQUE SYNC`) и не должен содержать конструкцию `USING <index_type>`.
* `<index_type>` - тип индекса, в настоящее время поддерживаются:

    * `secondary` — вторичный индекс. Для вторичных индексов доступен только режим `GLOBAL`. Это тип индекса по умолчанию.
    * `vector_kmeans_tree` — векторный индекс. Подробнее описан в разделе [Векторный индекс](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/vector_index.md?version=main).
    * `fulltext_plain` — базовый полнотекстовый индекс. Подробнее описан в [Полнотекстовый индекс](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/fulltext_index.md?version=main).
    * `fulltext_relevance` — полнотекстовый индекс со статистикой [BM25](https://en.wikipedia.org/wiki/Okapi_BM25) для расчёта релевантности. Подробнее описан в [Полнотекстовый индекс](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/fulltext_index.md?version=main).
    * `json` — JSON-индекс для ускорения предикатов `JSON_EXISTS` и `JSON_VALUE` по колонке типа `Json` или `JsonDocument`. Подробнее описан в [JSON-индекс](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/json_index.md?version=main).
    * `bloom_filter` — локальный Блум-индекс. Доступен только `LOCAL`. См. [ALTER TABLE ADD INDEX](https://ydb.tech/docs/ru/yql/reference/syntax/alter_table/indexes.md?version=main#local-bloom).
    * `bloom_ngram_filter` — локальный N-граммный Блум-индекс. Доступен только `LOCAL`. См. [ALTER TABLE ADD INDEX](https://ydb.tech/docs/ru/yql/reference/syntax/alter_table/indexes.md?version=main#local-bloom).
    * `min_max` — локальный min/max-индекс. Доступен только `LOCAL`. См. [ALTER TABLE ADD INDEX](https://ydb.tech/docs/ru/yql/reference/syntax/alter_table/indexes.md?version=main#local-min-max).

* `<index_columns>` — список имён колонок создаваемой таблицы через запятую, по которому определяется состав и порядок включения колонок в ключ индекса. Обязательно должен быть указан. Ключ индекса будет состоять из этих колонок с добавлением колонок первичного ключа таблицы.
* `<cover_columns>` — список имён колонок создаваемой таблицы через запятую, которые будут сохранены в индексе дополнительно к колонкам ключа индекса, давая возможность получить дополнительные данные без обращения за ними в таблицу. По умолчанию пуст.
* `<parameter_name>` и `<parameter_value>` — параметры индекса, специфичные для конкретного `<index_type>`. Некоторые параметры индекса нельзя задать при его создании. См. [Изменение параметров индекса](https://ydb.tech/docs/ru/yql/reference/syntax/alter_table/indexes.md?version=main#alter-index).
<!-- endsource: ru/yql/reference/syntax/_includes/index_grammar_explanation.md -->

## Пример

```yql
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)
)
```
