|
Непонятно, почему один запрос быстрее другого. | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
09.04.19
✎
10:18
|
ВЫБРАТЬ
СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот ИЗ РегистрНакопления.Продажи.Обороты(&НачДата, &КонДата, , ) КАК ПродажиОбороты ГДЕ ПродажиОбороты.Склад В ИЕРАРХИИ(&Склад) И НЕ ПродажиОбороты.Контрагент В ИЕРАРХИИ (&Контрагент) 3 секунды. ВЫБРАТЬ СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот ИЗ РегистрНакопления.Продажи.Обороты( &НачДата, &КонДата, , Склад В ИЕРАРХИИ (&Склад) И НЕ Контрагент В ИЕРАРХИИ (&Контрагент)) КАК ПродажиОбороты 11 секунд. Как так-то? |
|||
1
VladZ
09.04.19
✎
10:20
|
(0) Видимо, хреново работает сравнение вида "Склад В ИЕРАРХИИ (&Склад) "
|
|||
2
VladZ
09.04.19
✎
10:22
|
Покажи результаты сравнения, в случае, когда " И НЕ Контрагент В ИЕРАРХИИ (&Контрагент) " в скобках и когда в условии "где".
|
|||
3
sqr4
09.04.19
✎
10:22
|
ну да наверно логично, это медленная операция применяется только к подобранным записям за период. А вторая при построении таблицы оборотов. А какой период указан?
|
|||
4
Фрэнки
09.04.19
✎
10:23
|
Это старый прикол
не нужно пытаться использовать В ИЕРАРХИИ в параметрах выборки других таблиц |
|||
5
palsergeich
09.04.19
✎
10:25
|
ВИЕРАРХИИ не является оптимальным оператором.
Лучше сначала получить все элементы, потом засунуть в параметры Вирт таблицы. |
|||
6
Галахад
гуру
09.04.19
✎
10:29
|
Понятно. Спасибо!
|
|||
7
Галахад
гуру
09.04.19
✎
10:47
|
Сделал 3 запроса. Двумя получил список контрагентов и складов.
Разница между этой громоздкой конструкцией и первым запросом всего 15%, кода получилось значительно больше. :-( |
|||
8
1Сергей
09.04.19
✎
10:48
|
У вас сложная структура складов?
|
|||
9
Фрэнки
09.04.19
✎
10:52
|
И что тебе с того кода? Установлена некая граница на количество символов в текстах запросов?
|
|||
10
Галахад
гуру
09.04.19
✎
10:52
|
(8) Хм. Раньше об этом не задумывался.
Посмотрел. Да, больше 1000 складов. :-() |
|||
11
d4rkmesa
09.04.19
✎
10:52
|
(0) А сколько запрос записей выдает, миллионы?
|
|||
12
Галахад
гуру
09.04.19
✎
10:53
|
(9) Ждал значительного изменения скорости.
|
|||
13
d4rkmesa
09.04.19
✎
10:54
|
3-й запрос покажите.
|
|||
14
Галахад
гуру
09.04.19
✎
10:54
|
(11) Да нет. Где-то в районе 20'000.
|
|||
15
1Сергей
09.04.19
✎
10:56
|
(10) сколько уровней макс?
|
|||
16
seevkik
09.04.19
✎
11:03
|
Ну почему-почему, в первой ты в Обороты() отбор установил, во второй нет
|
|||
17
1Сергей
09.04.19
✎
11:04
|
(16) может, наоборот? :)
|
|||
18
Очевидно
09.04.19
✎
11:05
|
(0)
Могу ошибаться но есть мнение: Конструкция "В иерархии" на уровне MSSQL выполняется следуюшим образом : сначала 1С - формирует некую ВТ, куда выбирает элементы согласно структуре иерархии, а потом происходит соединение с таблицей, на которую вы накладываете это условие. Получается когда вы ставите эту конструкцию в условие виртуальной таблицы - происходит неявное соединение с подзапросом (Формирования Вирт. таблицы Обороты), из-за этого MSSQL может некорректно оценивать текущую статистику и формировать не самый быстрый план запроса. Если же вы выносите это условие в условия "Где" - у вас сначала формируется Виртуальная таблица с оптимальным планом , а потом на неё накладывается фильтр. но т.к. неявного соединения с подзапросом отсутствует - виртуальная таблица строится по оптимальному плану. и это быстрее. |
|||
19
Очевидно
09.04.19
✎
11:08
|
+ (18) в догонку
https://its.1c.ru/db/metod8dev#content:5842:hdoc |
|||
20
seevkik
09.04.19
✎
11:08
|
(17) ну точняк, наоборот
Короче как мне кажется, если простым языком, то это из-за двух условий в виртуальной таблице |
|||
21
d4rkmesa
09.04.19
✎
11:11
|
Слишком все неопределенно. Я бы проверил регламенты SQL, итоги, агрегаты. Если это стандартная УТ10/УПП, то там вроде нет измерения Склад в РН Продажи, проверить бы, установлено ли там свойство Индексировать измерения, если оно добавлено. А то может оно в итоге не включено или это вовсе реквизит.
|
|||
22
Очевидно
09.04.19
✎
11:15
|
(21) думаю чтобы внести определенность , было бы круто планы скуля посмотреть обоих запросов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |