Дополнительные индексы справочника 1С

Это продолжение статьи Индексы таблиц 1С и СУБД.

Индексирование реквизита справочника

При индексировании реквизита справочника, создается дополнительная таблица в СУБД с колонками «Реквизит» | «GUID».

Курс 1С: Эксперт. Индексирование Контрагенты по ИНН
Индексирование Контрагенты по ИНН

При индексировании табличной части справочника, например, Контактная информация Контрагентов по «Тип КИ», создается дополнительная таблица в СУБД с колонками «Тип КИ» | «GUID».

Курс 1С: Эксперт. Индексирование по реквизиту табличной части
Индексирование по реквизиту табличной части

Для индекса с доп. упорядочиванием, будет добавлена колонка представления!

Справочники иерархические и подчиненные владельцу

Когда мы включаем признак иерархичности, в БД добавляются поля Родитель и Это Группа. А так же дополнительные индексы: Родитель, Это группа, Наименование/Код.

Для подчиненных владельцу, так же добавляются поле: Владелец и 2 дополнительных индекса: Владелец, Наименование/Код.

Курс 1С: Эксперт Иерархический и подчиненный справочники 1С
Иерархический и подчиненный владельцу

Более сложная структура, влечет дополнительные расходы на стороне СУБД по обслуживанию таблиц.

Длина Кода = 0 или Наименования = 0

Когда устанавливаем длину кода = 0 или длину наименования = 0, то в БД удаляется соответствующая колонка данных. И, конечно же, индекс по соответствующему полю!

Когда это может пригодиться?

1. Код = 0

Например, для справочников, у которых не требуется вести код, таких как, Серийный номер или Город, мы можем отключить Код. Что нам это даст?

  • Размер таблицы в БД будет меньше;
  • Отсутствие дополнительного индекса даст ускорение, при работе со справочником.

2. Наименование = 0

Например, для справочника идентификаторы документов, нам не нужно наименование. Нам достаточно формировать уникальный идентификатор в виде числа + реквизит Объект – ссылка на документ.

Составной индекс

Рассмотрим задачу, что необходимо осуществлять быстрый поиск по нескольким реквизитам. Например, Отчество, Имя, Фамилия. Как реализовать данную задачу?

Курс 1С: Эксперт. Индексирование по нескольким полям
Индексирование по нескольким полям
  1. Можно создать поле «ОИФ», проиндексировать его и искать по целой строке, которую компоновать из 3 подстрок: Отчество, имя, Фамилия.
  2. Можно добавить отдельный регистр сведений с такими измерениями, но тогда встанет вопрос со скоростью записи элементов. Дополнительно возникнут проблемы с ведением отдельного объекта.
  3. Если проиндексировать все 3 реквизита, тогда добавится 3 дополнительных таблицы для каждого проиндексированного поля. Поиск в таком случае не будет эффективным.
  4. Можно сформировать индекс в самой СУБД, но это тоже влечет свои недостатки.
Курс 1С: Эксперт. Индексирование 1С по нескольким полям в СУБД
Индексирование 1С по нескольким полям в СУБД

Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 2. Занятие 03-02 Справочники + доп. индексы.

Константин Ефимов | 1С: Эксперт. Оптимизация работы 1С

КОНСТАНТИН ЕФИМОВ
Комментарии и вопросы