![]() |
![]() |
|
Теоретический вопрос про запрос. | ☑ | ||
---|---|---|---|---|
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) Сделал. Вроде подзапрос не выполняется (судя по скорости).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |