• Оглавление
  • Начало работы

Создание и удаление вторичных индексов

Команда table index позволяет создавать и удалять вторичные индексы:

ydb [connection options] table index [subcommand] [options]

, где [connection options] — опции соединения с БД

Также добавить или удалить вторичный индекс можно с помощью директив ADD INDEX и DROP INDEX операции YQL ALTER TABLE.

О назначении и применении вторичных индексов при разработке приложений можно прочитать в статье Вторичные индексы.

Создание вторичного индекса

Создание вторичного индекса выполняется командой table index add:

ydb [connection options] table index add <sync-async> <table> \
  --index-name STR --columns STR [--cover STR]

Параметры:

<sync-async> : Тип вторичного индекса. Укажите global-sync для построения индекса с синхронным обновлением или global-async для индекса с асинхронным обновлением.

<table>: Путь и имя таблицы, для которой выполняется построение индекса

--index-name STR: Обязательный параметр, в котором задается имя индекса. Рекомендуется определять такие имена индексов, чтобы по ним можно было понять, какие колонки в них включены. Имена индексов уникальны в контексте таблицы.

--columns STR: Обязательный параметр, в котором определяются состав и порядок включения колонок в ключ индекса. Перечисляются имена колонок через запятую, без пробелов. Ключ индекса будет состоять из этих колонок с добавлением колонок первичного ключа таблицы.

--cover STR: Необязательный параметр, в котором определяется состав покрывающих колонок индекса. Их значения не будут включены в состав ключа индекса, но будут скопированы в записи в индексе для получения их значений при поиске по индексу без необходимости обращения к таблице.

В результате успешного исполнения команды запускается фоновая операция построения индекса, и в выделенном псевдографикой поле id возвращается идентификатор операции для дальнейшего получения информации о ее статусе командой operation get. Незаконченное построение индекса может быть прервано командой operation cancel.

После того, как построение индекса завершено (успешно или прервано), запись об операции построения может быть удалена командой operation forget.

Получить информацию о статусе всех операций построения индекса можно командой operation list buildindex.

Примеры

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Добавление синхронного индекса по колонке air_date в созданную ранее таблицу episodes:

ydb -p quickstart table index add global-sync episodes \
  --index-name idx_aired --columns air_date

Добавление асинхронного индекса по колонкам release_date и title, и с копированием в индекс значения колонки series_info, для созданной ранее таблицы series:

ydb -p quickstart table index add global-async series \
  --index-name idx_rel_title --columns release_date,title --cover series_info

Вывод (id операции при фактическом запуске будет другой):

┌──────────────────────────────────┬───────┬────────┐
| id                               | ready | status |
├──────────────────────────────────┼───────┼────────┤
| ydb://buildindex/7?id=2814749869 | false |        |
└──────────────────────────────────┴───────┴────────┘

Получение информации о статусе операции (подставьте фактический id операции):

ydb -p quickstart operation get ydb://buildindex/7?id=281474976866869

Возвращаемое значение:

┌──────────────────────────────────┬───────┬─────────┬───────┬──────────┬─────────────────┬───────────┐
| id                               | ready | status  | state | progress | table           | index     |
├──────────────────────────────────┼───────┼─────────┼───────┼──────────┼─────────────────┼───────────┤
| ydb://buildindex/7?id=2814749869 | true  | SUCCESS | Done  | 100.00%  | /local/episodes | idx_aired |
└──────────────────────────────────┴───────┴─────────┴───────┴──────────┴─────────────────┴───────────┘

Удаление информации о построении индекса (подставьте фактический id операции):

ydb -p quickstart operation forget ydb://buildindex/7?id=2814749869

Удаление вторичного индекса

Удаление вторичного индекса выполняется командой table index drop:

ydb [connection options] table index drop <table> --index-name STR

Пример

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Удаление индекса idx_aired с таблицы episodes, построенного в примере создания индекса выше:

ydb -p quickstart table index drop episodes --index-name idx_aired

Переименование вторичного индекса

Переименование вторичного индекса выполняется командой table index rename:

ydb [connection options] table index rename <table> --index-name STR --to STR

Если индекс с новым именем существует, команда вернет ошибку.

Чтобы атомарно заменить существующий индекс, выполните команду переименования с параметром --replace:

ydb [connection options] table index rename <table> --index-name STR --to STR --replace

Пример

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Переименование индекса idx_aired с таблицы episodes, построенного в примере создания индекса выше:

ydb -p quickstart table index rename episodes --index-name idx_aired --to idx_aired_renamed