Имя: Пароль:
1C
1С v8
Просвятите немного по запроса
,
0 DrHiHi
 
25.04.13
17:02
Вообщем заметил такой прикол...
по сути 2 идентично простых запроса, но один из них выполняется пару секунд, а другой больше 5 минут

Запрос №1 (выполняется больше 5 минут)

ВЫБРАТЬ
   Ссылка КАК Склад
ПОМЕСТИТЬ ВТДоступныеСклады
ИЗ
   Справочник.Склады
ГДЕ
   Ссылка В (&Склады)
;

//////////////////////////////////////////////////////////////////////ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
           ,
           НЕ Склад В (ВЫБРАТЬ ВТДоступныеСклады .Склад ИЗ    ВТДоступныеСклады)) КАК ТоварыВРезервеНаСкладахОстатки


Запрос №2 (выполняется за пару секунд)

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
           ,
           НЕ Склад В (ВЫБРАТЬ Ссылка КАК Склад ИЗ Справочник.Склады ГДЕ Ссылка В (&Склады)) КАК ТоварыВРезервеНаСкладахОстатки


в чем подвох?? возможно из-за платформы (1С:Предприятие 8.2 (8.2.16.352))??

база относительно не маленькая.

P.S. Прошу не писать тупизма типа "Почему в параметрах не написать "НЕ Склад В (&Склады)"??". Задачи разные и есть прикол в том, что склады вычисляются, а потом нужно определить остатки по всем складам, кроме определенных.

в основном весь резерв валяется на

"НЕ Склад В (&Склады)" работает быстро
"Склад В (ВЫБРАТЬ ВТДоступныеСклады.Склад ИЗ ВТДоступныеСклады)" работает быстро, а вот с приставкой "НЕ" тупит по страшному
1 Fragster
 
гуру
25.04.13
17:04
посмотри в план запроса
2 DrHiHi
 
25.04.13
17:04
(1) в смысле??
3 Нуф-Нуф
 
25.04.13
17:04
добавь индексирование в пакет первого запроса
4 Fragster
 
гуру
25.04.13
17:06
в прямом. а еще можно

ВЫБРАТЬ
   Ссылка КАК Склад
ПОМЕСТИТЬ ВТДоступныеСклады
ИЗ
   Справочник.Склады
ГДЕ
   Не Ссылка В (&Склады)

и во втором запросе Не убрать
5 DrHiHi
 
25.04.13
17:06
(3) помогло))) спс. но все равно как-то не понятно
6 lapinio
 
25.04.13
17:06
Может быть тупит из временной таблицы. В место временной сделать в первом запросе  вложенный запрос в параметрах регистра!
7 DrHiHi
 
25.04.13
17:06
(4) в том то и дело, что первую часть запроса менять не нужно,  там написано совсем другое... я написал справочник для примера
8 DrHiHi
 
25.04.13
17:07
(6) смотри (3) индексация помогла
9 zak555
 
25.04.13
17:09
а так нельзя написать?


   ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
           ,
           НЕ Склад В (&Склады) ) КАК ТоварыВРезервеНаСкладахОстатки
10 DrHiHi
 
25.04.13
17:12
(9) вроде бы написал для одаренных "P.S. Прошу не писать тупизма типа "Почему в параметрах не написать "НЕ Склад В (&Склады)"??". Задачи разные и есть прикол в том, что склады вычисляются, а потом нужно определить остатки по всем складам, кроме определенных. "