---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://ydb-platform--ydb.viewer.diplodoc.com/en/yql/reference/syntax/create_table/json_index.md
  - https://ydb-platform--ydb.viewer.diplodoc.com/ru/yql/reference/syntax/create_table/json_index.md
  - href: https://ydb-platform--ydb.viewer.diplodoc.com/ru/yql/reference/syntax/create_table/json_index.md
    type: text/markdown
    title: Markdown version
  - href: https://ydb-platform--ydb.viewer.diplodoc.com/ru/llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/yql/reference/syntax/create_table/json_index.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb-platform--ydb.viewer.diplodoc.com/ru/llms.txt

# JSON-индекс

[JSON-индексы](https://ydb-platform--ydb.viewer.diplodoc.com/ru/dev/json-indexes.md) в [строковых](https://ydb-platform--ydb.viewer.diplodoc.com/ru/concepts/datamodel/table.md#row-oriented-tables) таблицах создаются с помощью того же синтаксиса, что и [вторичные индексы](https://ydb-platform--ydb.viewer.diplodoc.com/ru/yql/reference/syntax/create_table/secondary_index.md), при указании `json` в качестве типа индекса. Подмножество доступного для JSON-индексов синтаксиса:

```yql
CREATE TABLE `<table_name>` (
    ...
    INDEX `<index_name>`
        GLOBAL
        [SYNC]
        USING json
        ON ( <json_column> )
    [,   ...]
)
```

Где:

* `<index_name>` — уникальное имя индекса для доступа к данным.
* `SYNC` — указывает на синхронное обновление индекса. Это единственный доступный для JSON-индексов режим, явно указывать не обязательно.
* `<json_column>` — колонка таблицы типа `Json` или `JsonDocument`. JSON-индекс строится только по одной колонке.

JSON-индекс не поддерживает выражение `COVER` — попытка указать его приведёт к ошибке.

<!-- source: ru/_includes/not_allow_for_olap_note.md -->
{% note warning %}

<!-- source: ru/_includes/not_allow_for_olap_text.md -->
Поддерживается только для [строковых](https://ydb-platform--ydb.viewer.diplodoc.com/ru/concepts/datamodel/table.md#row-oriented-tables) таблиц. Поддержка функциональности для [колоночных](https://ydb-platform--ydb.viewer.diplodoc.com/ru/concepts/datamodel/table.md#column-oriented-tables) таблиц находится в разработке.
<!-- endsource: ru/_includes/not_allow_for_olap_text.md -->

{% endnote %}
<!-- endsource: ru/_includes/not_allow_for_olap_note.md -->

## Пример

```yql
CREATE TABLE documents (
    id Uint64 NOT NULL,
    payload JsonDocument NOT NULL,
    INDEX json_idx GLOBAL USING json ON (payload),
    PRIMARY KEY (id)
)
```

В этом примере создаётся таблица `documents` с JSON-индексом `json_idx` по колонке `payload`. Индекс будет использоваться запросами, в предикате `WHERE` которых содержатся вызовы `JSON_EXISTS` или `JSON_VALUE` по колонке `payload`.
