Имя: Пароль:
1C
1С v8
Условие Номенклатура В (Выбрать Номенклатура) и (Номенклатура, Истина) в ...
,
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 по номенклатуре.
И если это не первое/второе измерение это может отрабатывать не медленнее