Перейти к основному содержимому

Индексы базы данных для таблиц справочника

Чтобы запросы к данным выполнялись быстро, «1С:Шина» создает в СУБД для таблицы, хранящей данные справочника, индексы:

  • по полю Ссылка — создается всегда;
  • по полю Код — если у справочника задан реквизит Код;
  • по полю Наименование — если у справочника задан реквизит Наименование;
  • по полю Владелец — если у справочника задан реквизит Владелец.

Вы также можете описать в проекте дополнительные индексы, необходимые для операций поиска и чтения элементов справочника в вашем приложении. Для этого используйте свойство справочника Индексы. В этом свойстве вы можете перечислить наборы полей. По каждому такому набору «Шина» создает некластерный индекс в базе данных. Порядок следования полей в составном индексе определяется порядком следования реквизитов в наборе.

Дополнительные поля

Дополнительные поля — поля индекса, которые часто включаются в результирующую строку запроса, но при этом не используются для упорядочивания и отбора значений. Эти поля не влияют на структуру индекса и не снижают его производительность при их добавлении, что помогает оптимизировать и ускорить работу запросов.

Чтобы задать набор дополнительных полей, используйте свойство индекса ДополнительныеПоля.

Добавляемые реквизиты должны удовлетворять следующим требованиям:

  • не повторяться в рамках набора,
  • не входить в основные поля индекса,
  • удовлетворять правилам, накладываемым на основные поля индекса.

Пример индекса с дополнительными полями:

YAML
Индексы:
-
Имя: ПримерИндекса
ДополнительныеПоля:
- ДополнительноеПоле1
- ДополнительноеПоле2
Поля:
- ОсновноеПоле

Пример использования дополнительных полей в запросе. Обратите внимание, что дополнительные поля не участвуют в отборе значений.

ВЫБРАТЬ
ОсновноеПоле КАК Основное,
ДополнительноеПоле1 КАК Дополнительное1,
ДополнительноеПоле2 КАК Дополнительное2
ИЗ
ИмяТаблицы
ГДЕ
ОсновноеПоле == %ПараметрЗапроса

Поддержка дополнительных полей в различных СУБД

Дополнительные поля не поддерживаются в файловой СУБД, PostgreSQL 10 и SQLite. Для них дополнительные поля в уникальных индексах игнорируются, а в неуникальных становятся обычными полями индекса.

Ограничения

На создаваемые индексы накладываются следующие ограничения:

  • суммарный размер полей, входящих в индекс, не должен превышать 900 байт;
  • суммарное количество полей, входящих в индекс, не должно превышать 16;
  • в индексе не должно быть строковых или байтовых полей неограниченной длины.