Отбор по складу в секции ГДЕ вместо параметров виртуальной таблицы
Отчёт по остаткам одного склада работает почти столько же времени, сколько отчёт по всей компании (в базе несколько десятков складов). Текст запроса:
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура,
Остатки.КоличествоОстаток КАК Количество
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
ГДЕ
Остатки.Склад = &Склад
Почему отбор почти не ускоряет запрос?
- Виртуальная таблица всегда читает всю таблицу итогов целиком, ускорить такой запрос нельзя
- Не хватает индекса по измерению «Склад»: пока в свойствах измерения не включено индексирование, отбор выполняется перебором всех строк
- Условие применяется к уже рассчитанному результату: отбор по складу нужно передавать в параметры виртуальной таблицы
- Условие нужно заменить соединением со справочником складов: соединения выполняются быстрее условий
