Имя: Пароль:
1C
1С v8
Ускорение перебора выборки запроса
0 Slon747
 
04.11.20
17:04
Запрос возвращает большой объем данных.
Обход результата запроса идет по группировкам, далее - вложенная Выбрать().
Пока ВыборкаНоменклатуры.Следующий() Цикл
     ....
     ВыборкаХарактеристик = ВыборкаНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
     Пока ВыборкаХарактеристик.Следующий() Цикл
        ....
     КонецЦикла;
КонецЦикла;

Основное время тратится на эту строку:
ВыборкаХарактеристик = ВыборкаНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Можно ли как-то ускорить получение данной выборки? Может есть каки-то механизмы типа индексирования результата запроса?
1 piter3
 
04.11.20
17:17
Эээ, может запрос странный, покажи его хоть
2 RomanYS
 
04.11.20
17:23
(0) >> Основное время тратится на эту строку:
ВыборкаХарактеристик = ВыборкаНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Очень странно: или замер глючит, или всё другое реально заоптимизировано.
3 Slon747
 
04.11.20
17:42
(1) Запрос гигантский, нет смысла выкладывай. Сам запрос оптимизирован и выполняется более-менее быстро.
(2) Там очень много данных в результате запроса. Данная строка выполняется более 100 тыс раз.
4 ДенисЧ
 
04.11.20
17:43
Если запрос возвращает больше сотни тысяч значений, может - следует пересмотреть условия? Зачем тебе столько результатов?
5 RomanYS
 
04.11.20
17:45
(3) Тогда логично: если запрос "простой", а результат объемный.
Покажи замер, строк 5-10 из топа по времени
6 Вафель
 
04.11.20
17:53
сделай плоскую таблицу и меняй группировку сам по мере смены значения характеристики
7 fisher
 
04.11.20
18:53
> Данная строка выполняется более 100 тыс раз.
И сколько в абсолютном времени это занимает?
8 fisher
 
04.11.20
19:01
Т.е. более ста тысяч - это только ассортимента. Характеристик в разы больше, значит. Плюс вся хурма - выборка действительно немаленькая может выйти. А складируется она, ЕМНИП, во временные файлы. Если тормоза на таких базовых вещах - эффективнее смотреть на производительность звеньев инфраструктуры, чем на оптимизацию исходного кода. Ну там на SSD выноситься или в память.
Закон Брукера: Даже маленькая практика стоит большой теории.