|
Условие Номенклатура В (Выбрать Номенклатура) и (Номенклатура, Истина) в ...
| ☑ |
0
nufnufcheg
24.04.14
✎
10:35
|
пару раз на форуме давали подсказку, что если условие:
Номенклатура В
(ВЫБРАТЬ
ТаблицаНоменклатуры.Номенклатура
ИЗ
ТаблицаНоменклатурыКАК ТаблицаНоменклатуры)
заменить на:
(Номенклатура, Истина) В
(ВЫБРАТЬ
ТаблицаНоменклатуры.Номенклатура,
Истина
ИЗ
ТаблицаНоменклатурыКАК ТаблицаНоменклатуры)
будет существенный прирост в скорости выполнения (причем не всегда).
например (на моей базе) если выполнить запрос к таблице документа перемещение, поместить во временную, и ее использовать в качестве условия в параметре виртуальной таблицы ТоварыНаСкладах.Остатки - то прироста никакого (запрос и так выполняется доли секунды).
но если тоже самое сделать, и выполнить запрос к виртуальной таблице остатков МатериалыВЭксплуатации.Остатки - то добавление Истина сокращает время выполнения запроса с 5 сек до <1сек.
кто может объяснить, как все таки влияет добавление второго поля в условиях и почему такая разница в двух регистрах?
|
|
1
ДенисЧ
24.04.14
✎
10:39
|
План запросу скуля смотри, там всё написано
|
|
2
Maxus43
24.04.14
✎
10:40
|
2-й вариант транслируется как EXIST вместо IN в первом, это поидее быстрей
|
|
3
Maxus43
24.04.14
✎
10:41
|
>>то прироста никакого (запрос и так выполняется доли секунды).
дык ты не видишь просто разницы, но она есть, но тут естественно несущественна
|
|
4
nufnufcheg
24.04.14
✎
11:24
|
тогда следующий вопрос. Стоит ли сразу на этапе разработке использовать такую конструкцию?
|
|
6
nufnufcheg
24.04.14
✎
11:27
|
или только когда "подозрительно долго выполняется"?
|
|
7
Maxus43
24.04.14
✎
11:27
|
что-то мимо пишу сегодня...
(4) используй там где нужно, а не бездумно везде...
|
|
8
Maxus43
24.04.14
✎
11:27
|
конечно в узкие места только
|
|
9
PR
24.04.14
✎
11:27
|
(4) Нет. В данном случае читабельность и понятность важнее.
|
|
10
Sammo
24.04.14
✎
11:30
|
Хотя мне было бы понятнее join по номенклатуре.
И если это не первое/второе измерение это может отрабатывать не медленнее
|
|