Имя: Пароль:
1C
 
Оптимизация запроса. Вложенный запрос в поле выборки. Насколько это оптимально?
0 SerGa
 
26.09.22
17:57
Сейчас допиливаю некоторые формы списков в ЗУП
там в типовой используются динамические списки вот с такими конструкциями:


ЖурналДокументовВедомостиНаВыплатуЗарплаты.Комментарий КАК Комментарий,
    ЖурналДокументовВедомостиНаВыплатуЗарплаты.Тип КАК Тип,
    ВЫБОР
        КОГДА ИСТИНА В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    ИСТИНА
                ИЗ
                    РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК ОплатаВедомостейНаВыплатуЗарплаты
                ГДЕ
                    ОплатаВедомостейНаВыплатуЗарплаты.Ведомость = ЖурналДокументовВедомостиНаВыплатуЗарплаты.Ссылка)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЕстьОплаты
ИЗ
    ЖурналДокументов.ВедомостиНаВыплатуЗарплаты КАК ЖурналДокументовВедомостиНаВыплатуЗарплаты

т.е. в поле выборки подзапрос сидит....  не очень пойму насколько это оптимально?
Не значит ли это что подзапрос выполнится ровно столько раз сколько строк в выборке?

динамический список же поидее чтобы работать быстро должен использовать мегаоптимальный запрос - а тут вот какая развесистая конструкция получется.


Может кто в курсе?
1 rudnitskij
 
26.09.22
18:09
(0) Запись странная, но поскольку соединение не с виртуальной таблицей, ничего неоптимального тут нет. Просто не часто встречающийся вариант получения факта наличия записей в другой таблице, а так должно работать
2 SerGa
 
26.09.22
18:11
(1) то что оно работает, в этом нет сомнений... вопрос в оптимальности... сколько раз подзапрос выполняется..
3 H A D G E H O G s
 
26.09.22
18:12
Это коррелированный подзапрос, обычно это нормально
4 Сергиус
 
26.09.22
18:17
(0)В идеале надо смотреть профайлером план запроса в SQL(если серверная база), там возможно яснее будет.
5 SerGa
 
26.09.22
18:18
(4) это да.. я просто думал может кто уже ковырял и в курсе
6 mistеr
 
26.09.22
19:28
(0) Если это типовой код, то нормально. Другие варианты скорее всего хуже.