Содержание:
1. Подготовка системы компоновки данных 1С к тестированию
2. Параметры выполнения тестов в системе программирования 1С
Про индексирование в базах данных и конкретно в 1С уже написано очень много статей и большинство аспектов освещено. В сегодняшней статье будем проверять тезисы из официального руководства https://its.1c.ru/db/v8std/content/652/hdoc.
Проверим следующие тезисы:
- для попадания в индекс важен порядок полей в соединении таблиц (поля должны находиться в начале).
- для попадания в индекс важен порядок полей в выборке (поля должны идти подряд, без вклинивания).
1. Подготовка системы компоновки данных 1С к тестированию
Создадим демонстрационную базу данных. Регистр накопления ДенежныеСредства, регистр сведений СчетаПокупателей, ОтправкаУведомлений. Движения в регистры делаются документами СчетНаОплату и ПоступлениеДенежныхСредств.
Конфигурация тестовой базы
В регистрах установим флаг индексировать только у полей Контрагент и Договор, у измерения Организация не будем ставить флаг Индексирование.
Платформа 1С создаст индексы по этим полям.
Индекс по полю Контрагент
Индекс по полю Договор
Индекс по полю Организация
Заполним данными. Записей в регистре ДенежныеСредства — 5 534 400, регистре СчетаПокупателей - 5 534 000, справочнике Контрагенты — 10 000, справочнике Договоры - 100 000.
Смоделируем бизнес-процесс, когда наша организация выставляет контрагентам каждый месяц 1 числа счет на оплату (Документ СчетНаОплату), а компания-контрагент до конца текущего месяца должна совершить оплату.
Для маркетинговой акции необходимо выяснить, какие контрагенты своевременно оплачивают счета.
2. Параметры выполнения тестов в системе программирования 1С
База данных развернута на сервере Postgres15.5.
Замеры выполняются без обхода выборки, только время выполнения.
После каждого запроса очищаем статистику pg_stat_reset().
На сервере запущен только сервер 1С и сервер баз данных.
На сервере установлена только одна база данных.
Замеры каждого запроса производятся по 5 раз с очисткой статистики и указанием среднего времени.
Выполним запросы из Табл.1
Табл.1 Описание выполняемых запросов






Как видно из таблицы по времени выполнения, тезисы подтверждаются, выигрыш в производительности в максимальном исполнении достигает 16%, что не так мало, особенно если запрос на реальной базе будет выполняться часто.
При выполнении было замечено, что если не очищать статистику, то план запросов оптимизируется, и выигрыш по производительности снижается и не превышает 8-10 %. В некоторых случаях перестановки полей и вклинивания перестают менять время выполнения.
Не ставилось целью проверки, но утверждение из статьи, что не надо устанавливать флаг на первое измерение, так как платформой автоматически создастся индекс с первым измерением — справедливо только для регистра сведений, для регистра накоплений такой индекс не создался.
Специалист компании ООО "Кодерлайн"
Константин Маркин