Перейти к основному содержимому
Версия: 7.0

Инструкция INDEX

Инструкция INDEX создает новый индекс.

Синтаксис

INDEX [dbName] [indexType] field1, ..., fieldN;

Здесь field1, ..., fieldN - непустой список полей. Каждый его элемент может быть записан либо как свойство, хранящееся в этой таблице:

propertyId(param1, ..., paramN)

либо как типизированный параметр, указывающий на соответствующее ключевое поле:

param

Описание

Инструкция INDEX добавляет в систему новый индекс по упорядоченному непустому списку полей одной таблицы. Список должен содержать хотя бы одно материализованное свойство. По первому указанному свойству определяется таблица, для которой должен быть построен индекс. Все остальные свойства в списке должны храниться в той же таблице и использовать тот же набор параметров. Типизированные параметры, указанные в списке отдельно, соответствуют ключевым полям этой таблицы.

Параметры

  • dbName

    Строковый литерал, задающий физическое имя индекса в базе данных. Если не указан, имя генерируется автоматически.

  • indexType

    Необязательный выбор специального типа индекса. Если не указан, создается обычный индекс.

    • LIKE

      Для строковых полей сохраняет обычный индекс и дополнительно пытается создать специализированный GIN индекс для операций LIKE.

    • MATCH

      Для строковых полей сохраняет обычный индекс и дополнительно пытается создать специализированные индексы для MATCH и LIKE. Строковый MATCH индекс строится по to_tsvector с текущим языком полнотекстового поиска.

      Для одного поля типа TSVECTOR создает только специализированный GIN индекс по самому полю.

      Специализированные LIKE / MATCH индексы для строковых полей создаются только если для текущего адаптера БД доступна соответствующая trigram/full-text поддержка. Обычный индекс при этом создается независимо от нее.

  • propertyId

    Идентификатор свойства, которое должно храниться в таблице, для которой создается индекс.

  • param1, ..., paramN

    Список параметров свойства. Каждый элемент списка является типизированным параметром.

    В param1, ..., paramN имена параметров должны быть различны.

  • param

    Типизированный параметр, определяющий ключевое поле таблицы.

Примеры

INDEX customer(Order o);
number = DATA STRING (Order);
INDEX 'order_number_like' LIKE number(Order o);

searchVector = DATA TSVECTOR (Item);
INDEX 'item_search_match' MATCH searchVector(Item i);

date = DATA DATE (Order);
INDEX date(Order o), o;

INDEX supplier(Sku s, DATE d), s, price(s, d), d;