Snouphruh
Newbie | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору здарова всем! наткнулся я на такой вот запрос: ---------------------------------------------------- ВЫБРАТЬ СпрНом.Ссылка Номенклатура, СпрНом.Артикул Артикул, Остатки.КоличествоОстаток Остаток, Резервы.КоличествоОстаток Резерв Цены.Цена Цена ИЗ Справочник.Номенклатура СпрНом ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки ( , Склад = &спрслкСклад) Остатки ПО Остатки.Номенклатура = СпрНом.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки ( , Склад = &спрслкСклад) Резервы ПО Резервы.Номенклатура = СпрНом.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних ( , ТипЦен = &спрслкТипЦен) Цены ПО Цены.Номенклатура = СпрНом.Ссылка ---------------------------------------------------- в инете читал несколько статей, где рекомендуется не делать соединения с различными ВТ (Виртуальными Таблицами, типа Остатки, Обороты, ОстаткиИОбороты, СрезПервых, СрезПоследних) и заменять такие соединения на пакетные запросы, где в основном запросе уже идет соединение с результатом пакетных запросов. говорят, что такие запросы работают быстрее. я переписал этот запрос, используя пакетный вариант: ---------------------------------------------------- ВЫБРАТЬ Ссылка Номенклатура, Артикул ПОМЕСТИТЬ ВТ_Номенклатура ИЗ Справочник.Номенклатура ИНДЕКСИРОВАТЬ ПО Номенклатура ; ВЫБРАТЬ Номенклатура, КоличествоОстаток Количество ПОМЕСТИТЬ ВТ_Остатки ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки ( , Склад = &спрслкСклад И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТ_Номенклатура)) ИНДЕКСИРОВАТЬ ПО Номенклатура ; ВЫБРАТЬ Номенклатура, КоличествоОстаток Количество ПОМЕСТИТЬ ВТ_Резервы ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки ( , Склад = &спрслкСклад И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТ_Номенклатура)) ИНДЕКСИРОВАТЬ ПО Номенклатура ; ВЫБРАТЬ Номенклатура, Цена ПОМЕСТИТЬ ВТ_Цены ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних ( , ТипЦен = &спрслкТипЦен И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТ_Номенклатура)) ИНДЕКСИРОВАТЬ ПО Номенклатура ; ВЫБРАТЬ СпрНом.Номенклатура Номенклатура, СпрНом.Артикул Артикул, Остатки.Количество Остаток, Резервы.Количество Резерв, Цены.Цена Цена ИЗ ВТ_Номенклатура СпрНом ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки Остатки Остатки.Номенклатура = СпрНом.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Резервы Резервы Резервы.Номенклатура = СпрНом.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены Цены Цены.Номенклатура = СпрНом.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки Остатки Остатки.Номенклатура = СпрНом.Номенклатура ---------------------------------------------------- проверил скорость выполнения обоих запросов. мой вариант оказался существенно медленнее =( почему? может я что-то не так понял из статей по оптимизации запросов? |