Имя: Пароль:
1C
1С v8
Теоретический вопрос про запрос.
0 Lama12
 
07.08.13
16:55
Имеем одну физическую таблицу и подзапрос.
Можно ли их как ни будь связать, так что б если в физической таблице условие не выполняется, подзапрос вообще не выполнялся (не производилась его выборка)?
:)
1 Maxus43
 
07.08.13
16:57
подзапрос всмысле вложенный?
2 Maxus43
 
07.08.13
16:57
пример в студию
3 Lama12
 
07.08.13
16:58
Ага вложенный.
Пример сейчас накидаю.
Но фиг его знает выполняется ли там вложенный запрос.
4 exwill
 
07.08.13
16:59
(0) Это - дело СУБДшного оптимизатора запроса.
5 Полотенчик
 
07.08.13
17:00
связать ПО (&Условие) ?
6 Lama12
 
07.08.13
17:01
ВЫБРАТЬ
    ВложенныйЗапрос1.Поле1,
    ВложенныйЗапрос1.Поле2
ИЗ
    (ВЫБРАТЬ
        1 КАК Поле1) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            "А" КАК Поле1,
            "Б" КАК Поле2
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            "Ю",
            "Ж") КАК ВложенныйЗапрос1
        ПО (ВложенныйЗапрос.Поле1 = 1)
7 Lama12
 
07.08.13
17:01
Последнее условие если 1 заменить на 2, ВложенныйЗапрос1 будет выполняться?
8 Lama12
 
07.08.13
17:02
(4) Допустим MS SQL
9 Полотенчик
 
07.08.13
17:04
Т.к. у меня постгрес, а там нормального профайлера нет, то я в таком случае вставил бы во вложенный запрос заведомо долгий запрос и хотя бы сравнил время выполения.
10 Maxus43
 
07.08.13
17:04
(7) почти наверняка будет... но присоеденюсь к (4), что решит СУБД ты не увидишь, надо план запроса смотреть
11 Lama12
 
07.08.13
17:06
(10) Понятно. :(
Печалька однако.
12 Полотенчик
 
07.08.13
17:07
+ (9) и судя по времени, когда постгрес видит условие / соединение по ЛОЖЬ, то он не утруждает себя выборкой
13 exwill
 
07.08.13
17:07
(11) Поделись - в чем, собственно твоя печаль?
Может развеем...
14 Lama12
 
07.08.13
17:09
(13) ВложенныйЗапрос1 у меня очень тяжелый.
Выполняется долго.
Но есть одно условие. Можно его в код перед запросом вытащить, но лень писать. Хотелось все в запросе анализировать :)
15 Maxus43
 
07.08.13
17:12
проверь, может и не будет
16 Deon
 
07.08.13
17:17
Мне почему-то думается, что если уж ты написал подзапрос, он его обязательно выполнит, а потом уже условия накладывать будет.
17 Maxus43
 
07.08.13
17:25
(16) не факт...
Если 1 = 2 И 1 = 1 Тогда - проверит только 1=2 и дальше не будет. Оптимизатор субд тоже не тупой
18 rs_trade
 
07.08.13
17:48
по иннер джойн если связь таблицы и подзапроса, я подозреваю что не будет выполняться. если выборка из таблицы пустая, какой смысл выполнять подзапрос.
19 Lama12
 
07.08.13
18:06
(18) Сделал. Вроде подзапрос не выполняется (судя по скорости).
Закон Брукера: Даже маленькая практика стоит большой теории.