|
Странное поведение при получении остатков по накладной
| ☑ |
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сек :)
|
|