|
Как ускорить выполнение запроса | ☑ | ||
---|---|---|---|---|
0
nikoslav
22.08.19
✎
16:47
|
Как ускорить выполнение этого запроса?
"ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад, | ПартииТоваровНаСкладахОстатки.СерияНоменклатуры, | ПартииТоваровНаСкладахОстатки.ДокументОприходования, | ПартииТоваровНаСкладахОстатки.Качество, | ПартииТоваровНаСкладахОстатки.СтатусПартии |ПОМЕСТИТЬ ВТ_МинусоваяНоменклатура |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата1, Склад В ИЕРАРХИИ (&Склады)) КАК ПартииТоваровНаСкладахОстатки |ГДЕ | ВЫБОР | КОГДА &ВыбНоменкл <> НЕОПРЕДЕЛЕНО | ТОГДА ПартииТоваровНаСкладахОстатки.Номенклатура В ИЕРАРХИИ (&ВыбНоменкл) | ИНАЧЕ ИСТИНА | КОНЕЦ | И (ПартииТоваровНаСкладахОстатки.КоличествоОстаток < 0 | ИЛИ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток < 0) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура.Код КАК Код, | ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад, | ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладахОстатки.СерияНоменклатуры, | ПартииТоваровНаСкладахОстатки.ДокументОприходования, | ПартииТоваровНаСкладахОстатки.ДокументОприходования.Дата КАК ДатаДокОприходования, | ПартииТоваровНаСкладахОстатки.СтатусПартии, | ПартииТоваровНаСкладахОстатки.Заказ, | ПартииТоваровНаСкладахОстатки.Качество, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, | ПартииТоваровНаСкладахОстатки.СтоимостьОстаток |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &Дата1, | Склад В ИЕРАРХИИ (&Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_МинусоваяНоменклатура.Номенклатура | ИЗ | ВТ_МинусоваяНоменклатура КАК ВТ_МинусоваяНоменклатура)) КАК ПартииТоваровНаСкладахОстатки | |УПОРЯДОЧИТЬ ПО | Код, | КоличествоОстаток, | ДатаДокОприходования"; |
|||
1
mikecool
22.08.19
✎
16:47
|
посмотреть план запроса, подумать над ним ))
|
|||
2
mikecool
22.08.19
✎
16:48
|
в первом запросе условие на номенклатуру внести в параметры вирт таблицы
|
|||
3
mikecool
22.08.19
✎
16:48
|
а зачем склад в иерархии?
|
|||
4
mikecool
22.08.19
✎
16:49
|
и зачем второй запрос?
|
|||
5
unregistered
22.08.19
✎
17:00
|
(4) Запросы разворачивают остатки по регистру в разрезе различных измерений. Во втором запросе добавляется "Заказ". Может быть они таким образом ловят развал по заказам?.... Не знаю.
|
|||
6
dezss
22.08.19
✎
17:03
|
Может еще от ИЛИ в первом попробовать избавиться?
|
|||
7
Aleksandr N
22.08.19
✎
17:07
|
(6) НЕ (НЕ ПартииТоваровНаСкладахОстатки.КоличествоОстаток < 0
И НЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток < 0) Так? :-) |
|||
8
dezss
22.08.19
✎
17:11
|
(7) Отличный вариант)))
|
|||
9
timurhv
22.08.19
✎
17:40
|
(0) Покажите структуру регистра по измерениям: ПартииТоваровНаСкладах
|
|||
10
timurhv
22.08.19
✎
17:47
|
(0), (9) Отрабатывает долго именно первый пакет?
|
|||
11
unenu
22.08.19
✎
17:50
|
извюавится от условия Склад В ИЕРАРХИИ (&Склады)
примерно так ВЫБРАТЬ РАЗРЕШЕННЫЕ ТаблСклады.Ссылка КАК СкладОтбора ПОМЕСТИТЬ ВтСклады {ВЫБРАТЬ СкладОтбора.*} ИЗ Справочник.Склады КАК ТаблСклады ГДЕ НЕ ТаблСклады.ЭтоГруппа И ТаблСклады.Склад В ИЕРАРХИИ (&Склады) {ГДЕ ТаблСклады.Ссылка.* КАК СкладОтбора} ИНДЕКСИРОВАТЬ ПО СкладОтбора .... РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата1, И Склад В (ВЫБРАТЬ СкладОтбора.СкладОтбора ИЗ СкладОтбора)) поле именно СкладОтбора в ВТ, т.е. отличное от Склад, тогда, если это запрос в СКД, то она(СКД) не будет генерить отборы в Иерархии. Даже если это не СКД, то именно такой подход даст результат. остальные напильники играют меньшую роль |
|||
12
unenu
22.08.19
✎
17:55
|
уточню
И Склад В БРАТЬ ВтСклады.СкладОтбора ИЗ ВтСклады условие с иерархия сама по себе зло, а на талицах в сотни миллионов - зло абсолютное. проверено именно на таких таблицах. жаль, что в типовых не используют этот простой прием хотя бы в отчетах на СКД - это дало бы огромный прирос производительности. Некоторые топовые отчеты УТ 11 в расширении модифицировал подобным образом и ок. |
|||
13
timurhv
22.08.19
✎
17:56
|
(11) Это все ничто, если номенклатура стоит выше склада и не передается параметров в запрос.
|
|||
14
unenu
22.08.19
✎
17:57
|
ктати ПартииТоваровНаСкладахОстатки.Номенклатура В ИЕРАРХИИ (&ВыбНоменкл)
условие на ВТ посадить также, иначе толку не будет. |
|||
15
unenu
22.08.19
✎
18:01
|
(13) в праметрах вируталлной или в ГДЕ не столь важно
важно что бы не было ИЕРАРХИЙ в условиях возьмите консоль, планы запросов, замеры, виртуальную таблицу в пару сотен миллионов строк и потом приходите со своим ничто еще. миф о строгой необходимости толкать условия в параметры виртуальной таблицы - лишь миф методистов. как его развенчать я вам сказал возьмите .... |
|||
16
timurhv
22.08.19
✎
18:02
|
(15) рука-лицо
|
|||
17
timurhv
22.08.19
✎
18:04
|
(15) если вы не передаете в параметры виртуальной таблицы номенклатуру, а передаете только склад, то у вас не используется кластерный индекс. Тогда да, без разницы указать в параметрах склад или в ГДЕ.
|
|||
18
unenu
22.08.19
✎
18:07
|
(17) примерно это я имел ввиду когда резюмировал
"остальные напильники играют меньшую роль" важно устранить главную причину тормозов, а когда слон пал, то тогда можно пнуть и моську) |
|||
19
timurhv
22.08.19
✎
18:12
|
(18) Что больше дает тормозов уже зависит от количества номенклатуры в справочнике и складов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |