Имя: Пароль:
1C
 
Не понимаю почему запрос стал быстрее
↓ (Волшебник 29.02.2024 17:30)
0 Kukr47
 
29.02.24
16:29
Есть запрос:

ВЫБРАТЬ
    АТС_УпаковочныеЛисты.ДокументОснование КАК ЗК
ПОМЕСТИТЬ вт_ЗК
ИЗ
    РегистрСведений.АТС_УпаковочныеЛисты КАК АТС_УпаковочныеЛисты
ГДЕ
    АТС_УпаковочныеЛисты.РасходныйОрдер = &РасходныйОрдер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    АТС_УпаковочныеЛисты.УпаковочныйЛист КАК УпаковочныйЛист
ИЗ
    РегистрСведений.АТС_УпаковочныеЛисты КАК АТС_УпаковочныеЛисты
        //ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_ЗК КАК вт_ЗК
        //ПО АТС_УпаковочныеЛисты.ДокументОснование = вт_ЗК.ЗК
ГДЕ
    НЕ АТС_УпаковочныеЛисты.УпаковочныйЛист В (&МассивТолькоЧтоСобранныхУпаклистов)
    //И АТС_УпаковочныеЛисты.ДокументОснование В
    //        (ВЫБРАТЬ
    //            вт_ЗК.ЗК
    //        ИЗ
    //            вт_ЗК)
    И НЕ АТС_УпаковочныеЛисты.УпаковочныйЛист.Подпаковка


меняются лишь строки которые закоментированы,
если раскоментить все строки то запрос получается 0.03
если закоменчено хоть что-то из двух(либо соединение либо условие в где) то запрос выполняется 0.11, не понимаю почему так происходит потому что вроде как условие в где и соединение выполняет одну и ту же функцию и обрезает такие же данные, но вместе работает лучше...
1 Буковка
 
29.02.24
16:30
(0) у Вас в условии ГДЕ вложенный запрос.
2 Kukr47
 
29.02.24
16:33
(1) я это знаю, и как он ускоряет выполнение запроса? если уже есть внутреннее соединение?
3 Hmster
 
29.02.24
16:37
(2) MS SQL?
4 Ненавижу 1С
 
29.02.24
16:40
ну в закомментированном виде первая таблица впустую выполняется, так что не равноценно
5 Kukr47
 
29.02.24
16:42
(4) суть в том что допустим если у меня только соединение то выполняется 0.1, если я добавляю условие со вложенным запросом то получаю 0.01-0.03
также верно и наоборот если только условие где и я добавляю соединение
6 Garikk
 
29.02.24
16:43
(0) я хз как реально ну тупо в лоб
результатов где урезанный фильтр ГДЕ - больше, и дольше выполняется fetch из базы соответственно

когда условие больше - результатов меньше, а само условие видимо практически не вносит потерь из-за оптимизаций движком БД
7 stopa85
 
29.02.24
17:13
Планы запросов смотреть пробовали?

Нет, ну серьезно, без них же никак.
8 Волшебник
 
29.02.24
17:30
0.03 и 0.11 - разница несущественная
9 NcSteel
 
29.02.24
22:51
(0) оптимизатор запроса лучше понимает что от него хотят и собирает более корректный план запроса.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс