Индексы базы данных для таблиц регистра сведений
Чтобы запросы к данным выполнялись быстро, «Шина» создает для таблицы регистра сведений индекс по измерениям, а для периодического регистра — три индекса, в которые входят измерения и период. Поэтому порядок измерений регистра в проекте важен, так как он влияет на состав индексов базы данных.
Таблица непериодического регистра сведений имеет следующий индекс:
-
имя-измерения-1 + ... + имя-измерения-N
Индекс, включающий все поля-измерения в том порядке, в котором они описаны в регистре сведений
Таблица периодического регистра сведений имеет следующие индекс ы:
-
Период + имя-измерения-1 + ... + имя-измерения-N
Индекс, включающий поле Период и все поля-измерения в том порядке, в котором они описаны в регистре сведений
-
имя-измерения-1 + ... + имя-измерения-N + Период
Индекс, включающий все поля-измерения в том порядке, в котором они описаны в регистре сведений, и поле Период
-
СледующийПериод + имя-измерения-1 + ... + имя-измерения-N
Индекс, включающий поле СледующийПериод и все поля-измерения в том порядке, в котором они описаны в регистре сведений
Поле СледующийПериод содержит значение поля Пери од следующей (по возрастанию значения поля Период) записи с такими же значениями измерений.
Если следующей записи нет, то это поле содержит максимальное значение того типа, который имеет поле Период:
- Дата{9999-12-31} для типа
Дата
- ДатаВремя{9999-12-31 23:59.999} для типа
ДатаВремя
Эти индексы удобны в общем случае, но могут не подходить для конкретных операций поиска и чтения элементов регистра сведений в вашем приложении. Тогда вы можете описать в проекте, какие дополнительные индексы «Шина» должен создать в таблицах регистра сведений.
Для этого используйте свойство регистра сведений Индексы. В этом свойстве вы можете перечислить наборы полей. По каждому такому набору «Шина» создает некластерный индекс в базе данных. Порядок следования полей в составном индексе определяется порядком следования реквизитов в наборе.
Дополнительные поля
Дополнительные поля — поля индекса, которые часто включаются в результирующую строку запроса, но при этом не используются для упорядочивания и отбора значений. Эти поля не влияют на структуру индекса и не снижают его производительность при их добавлении, что помогает оптимизировать и ускорить работу запросов.
Чтобы задать набор дополнительных полей, используйте свойство индекса ДополнительныеПоля.
Добавляемые реквизиты должны удовлетворять следующим требованиям:
- не повторяться в рамках набора,
- не входить в основные поля индекса,
- удовлетворять правилам, накладываемым на основные поля индекса.
Пример индекса с дополнительными полями:
Индексы:
-
Имя: ПримерИндекса
ДополнительныеПоля:
- ДополнительноеПоле1
- ДополнительноеПоле2
Поля:
- ОсновноеПоле
Пример использования дополнительных полей в запросе. Обратите внимание, что дополнительные поля не участвуют в отборе значений.
ВЫБРАТЬ
ОсновноеПоле КАК Основное,
ДополнительноеПоле1 КАК Дополнительное1,
ДополнительноеПоле2 КАК Дополнительное2
ИЗ
ИмяТаблицы
ГДЕ
ОсновноеПоле == %ПараметрЗапроса
Поддержка дополнительных полей в различных СУБД
Дополнительные поля не поддерживаются в файловой СУБД, PostgreSQL 10 и SQLite. Для них дополн ительные поля в уникальных индексах игнорируются, а в неуникальных становятся обычными полями индекса.
Ограничения
На создаваемые индексы накладываются следующие ограничения:
- суммарный размер полей, входящих в индекс, не должен превышать 900 байт;
- суммарное количество полей, входящих в индекс, не должно превышать 16;
- в индексе не должно быть строковых или байтовых полей неограниченной длины.