Имя: Пароль:
1C
1С v8
Странное поведение при получении остатков по накладной
0 gosn1ck
 
26.06.13
11:33
Добрый день. имеется регистр накопление "товары на складах". измерения Склад, Номенклатура и платформа 8.1. так вот выяснилось, что клиент-серверной базе (субд sql) конструкция

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

СГРУППИРОВАТЬ ПО
   ЧекККМТовары.Склад,
   ЧекККМТовары.Номенклатура
;

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

работает медленное с условием ниже, чем без него...
 Номенклатура В
   (ВЫБРАТЬ
       А.Номенклатура
   ИЗ
       Данные КАК А)

Есть у кого какие предположения почему?
1 1Cv8_accepted
 
26.06.13
11:36
(0) Потому, что запрос усложняется! Посмотри в трейсере один и второй. Почувствуй, так сказать, разницу.
2 hhhh
 
26.06.13
11:58
(0) потому что вы на редкость невнимательны. Вот так пробуйте

ВЫБРАТЬ
   ЧекККМТовары.Номенклатура КАК Номенклатура,
   СУММА(ЧекККМТовары.Количество) КАК Количество,
   ЧекККМТовары.Склад КАК Склад
ПОМЕСТИТЬ Данные
ИЗ
ИНДЕКСИРОВАТЬ ПО Номенклатура
3 GROOVY
 
26.06.13
12:02
Да и условие я делал бы на сочетание полей:

(Склад, Номенклатура) В (ВЫБРАТЬ &Склад, Номенклатура ИЗ Данные)
4 gosn1ck
 
26.06.13
12:32
(2) (3) в документе 50 позиций, написал с сочетанием полей (Склад, Номенклатура) В (ВЫБРАТЬ Склад, Номенклатура ИЗ Данные) и с ИНДЕКСИРОВАТЬ ПО Склад, Номенклатура - результат - 1сек, убираю сочетание и оставляю  Склад = &Склад - результат - 0,4сек, дальше убираю индексы - результат - 0,2сек :)