|
|
|
Вопрос по JOIN
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не мог бы уважаемый ALL пролить свет на непонятную мне картину ? Запрос 1. SELECT F1, DATE FROM TABLE1 T left OUTER JOIN TABLE2 R ON T.F1=R.F1 WHERE DATE='01.01.2002' AND T.F1='000171' Запрос 2. SELECT F1, DATE FROM TABLE1 T left OUTER JOIN TABLE2 R ON T.F1=R.F1 AND DATE='01.01.2002' WHERE T.F1='000171' Как видно, во втором случае в join поставлена часть условия. Я думал, что результат в первом и во втором случае будет одинаков. Но я ошибся :-( Планы запросов одинаковые, за исключением момента объединения. В первом случае используется стратегия Hash Match/Inner join, во втором - Hash Match/Left join. Объясните, пожалуйста, разницу между этими запросами. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 12:29:26 |
|
||
|
Вопрос по JOIN
|
|||
|---|---|---|---|
|
#18+
Может и ошибаюсь, но: в первом случае ты сказал, что наплевать на условие T.F1=R.F1 но выбрать все с датой , вот он с датой все и выбрал а во втором ты сказал, что тебе наплевать в принципе на все условия T.F1=R.F1 AND DATE='01.01.2002' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 12:38:02 |
|
||
|
Вопрос по JOIN
|
|||
|---|---|---|---|
|
#18+
2 tygra Вроде логично. Но меня больше интерисует вопрос почему планы разные. Т.е. получается что если нет условия (AND DATE='01.01.2002') в join-е, то используется стратегия Hash Match/Inner join. А в другом случае - Hash Match/Left join. Или тут что-то другое ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 12:52:31 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3373&tid=1818662]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
| others: | 194ms |
| total: | 302ms |

| 0 / 0 |
