Инструкция 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;