INDEX
Внимание
Поддерживается только для строковых таблиц. Поддержка функциональности для колоночных таблиц находится в разработке.
Конструкция INDEX
используется для определения вторичного индекса для строковых таблиц:
CREATE TABLE table_name (
...
INDEX <index_name> GLOBAL [SYNC|ASYNC] ON ( <index_columns> ) COVER ( <cover_columns> ),
...
)
где:
- index_name — уникальное имя индекса, по которому будет возможно обращение к данным.
- SYNC/ASYNC — синхронная или асинхронная запись в индекс, если не указано — синхронная.
- UNIQUE — создаёт индекс с гарантией уникальности для вставляемых значений.
- index_columns — имена колонок создаваемой таблицы через запятую, по которым возможен поиск в индексе.
- cover_columns — имена колонок создаваемой таблицы через запятую, которые будет сохранены в индексе дополнительно к колонкам поиска, давая возможность получить дополнительные данные без обращения за ними в таблицу.
Примеры создания таблиц со вторичным индексом
Строковая таблица cо вторичным индексом
Колоночная таблица cо вторичным индексом
CREATE TABLE my_table (
a Uint64,
b Uint64,
c Utf8,
d Date,
INDEX idx_d GLOBAL ON (d),
INDEX idx_ba GLOBAL ASYNC ON (b, a) COVER (c),
INDEX idx_bc GLOBAL UNIQUE SYNC ON (b, c),
PRIMARY KEY (a)
)
CREATE TABLE my_table (
a Uint64 NOT NULL,
b Uint64,
c Utf8,
d Date,
INDEX idx_d GLOBAL ON (d),
INDEX idx_ba GLOBAL ASYNC ON (b, a) COVER (c),
PRIMARY KEY (a)
)
WITH (
STORE = COLUMN
);