Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Чем на оптимален такой запрос? (http://forums.kuban.ru/f1040/chem_na_optimalen_takoj_zapros-7792610.html)

meegor 03.06.2016 09:20

Чем на оптимален такой запрос?
 
ВЫБРАТЬ
ПодЗапрос.Номенклатура КАК Номенклатура,
ПодЗапрос.Характеристика КАК Характеристика,
ПодЗапрос.Количество КАК КоличествоПоДокументу,
ОстаткиТоваров.КоличествоОстаток КАК КоличествоНаСкладе
ИЗ
(ВЫБРАТЬ
РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровТовары.Характеристика КАК Характеристика,
СУММА(РеализацияТоваровТовары.Количество) КАК Количество
ИЗ
Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
ГДЕ
РеализацияТоваровТовары.Ссылка = &ТекущийДокумент

СГРУППИРОВАТЬ ПО
РеализацияТоваровТовары.Номенклатура,
РеализацияТоваровТовары.Характеристика) КАК ПодЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки(, Склад = &Склад) КАК ОстаткиТоваров
ПО (ОстаткиТоваров.Номенклатура = ПодЗапрос.Номенклатура)
И (ОстаткиТоваров.Характеристика = ПодЗапрос.Характеристика)
ГДЕ
ЕСТЬNULL(ОстаткиТоваров.КоличествоОстаток, 0) - ПодЗапрос.Количество < 0

meegor 03.06.2016 09:35

Было бы предпочтительнее построение на временных таблицах?

roma n 03.06.2016 12:06

РегистрНакопления.ТоварыОрганизаций.Остатки(, Склад = &Склад) - суть - запрос для построения виртуальной таблицы по всей номенклатуре. Ограничь.
Далеко не факт что оптимизатор скуля успеет разобраться что у тебя потом левое соединение к короткому списку

VZ 03.06.2016 12:38

2-roma n > А как оптимизатор сумеет "разобраться"? Что такое "короткий список"? Это скоко в удавах?
:)

Мне кажется вообще дурным тоном полагаться на подобные конструкции. Есть же средства прямой оптимизации.
Если, конечно, вообще есть нужда в оптимизации. Зачастую время писания продолжительнее суммарного времени исполнения.

USSR 03.06.2016 12:50

Можно просто товары документа запросом уложить в список, а затем уже запрос по товарам на складе. Но думаю тут мышиная возня, ну будет запрос выполняться 1 сек или 1.2 сек ))

roma n 03.06.2016 12:57

(4) мышиная возня. В случае нормального регистра, да.
(0) Если это реальная проблема, а не тест - смотри закрывается ли регистр и, если sql, - актуальность статистики


Текущее время: 09:30. Часовой пояс GMT +3.