|
0
kalinin
06.06.16
✎
14:36
|
Приветствую!
Наткнулся на такую проблему: при выполнении запроса за разные периоды существенно различается время выполнения.
Запрос:
ВЫБРАТЬ
Номенклатура,
КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&д1,&д2,,Контрагент в ИЕРАРХИИ (&ГруппыКонтр))
Разница во времени выполнения между запросами с периодом 20.04.16-30.04.16 и с периодом 20.05.16-30.05.16 - в десятки раз.
Количество записей в таблице движений "Продажи" за оба периода примерно одинаковы.
Нашел разницу, которую видно в плане запроса при получении продаж: разница в количестве строк во временных таблицах контрагентов.
В обоих случаях формируется временная таблица, куда складываются контрагенты, попавшие в иерархию.
На скриншоте показано факт. количество строк временной таблицы
А на этом скрине видно (получение продаж за май), что, почему-то, во временной таблице уже не 4923 строки, а какие-то миллионы...
Таким образом:
При получении продаж за апрель во временной таблице 4923 контрагентов
При получении продаж за май во временной таблице миллионы контрагентов
Если в обоих случаях на последней итерации формирования временной таблицы контрагентов
количество строк 4923, то откуда берется такое количество контрагентов во временной таблице при получении продаж именно за 20.05.16-30.05.16?
P.S.: аналогичная ситуация, если делать отбор по номенклатуре.
|
|
|
3
Dmitrii
гуру
06.06.16
✎
17:16
|
Попробуйте переписать на вариант с получением списка контрагентов ДО выполнения запроса к регистру. Например:
ВЫБРАТЬ
Ссылка
ПОМЕСТИТЬ ТабКонтрагенты
ИЗ
Справочника.Контрагенты
ГДЕ
Ссылка В ИЕРАРХИИ (&ГруппыКонтр)
И НЕ Ссылка.ЭтоГруппа
ИНДЕКСИРОВАТЬ ПО
Ссылка
;
/////////////////////////////////
ВЫБРАТЬ
Номенклатура,
КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(&д1,&д2,,Контрагент В (ВЫБРАТЬ Ссылка ИЗ ТабКонрагенты))
|
|