Что бестрее JOIN или WHERE ... AND ....

zam-ministra
Дата: 07.09.2005 14:13:22
Любой JOIN можно заменить комбинацией типа WHERE t1.p1=t2.p1 and t2.p1=t3.p2 и т.д Вопрос какая консткрукция будет быстрее работать JOIN или WHERE?
AlexeiK
Дата: 07.09.2005 15:06:37
среда выполнения sql инструкций какая?
ЛП
Дата: 07.09.2005 15:16:48
zam-ministra
Любой JOIN можно заменить комбинацией типа WHERE t1.p1=t2.p1 and t2.p1=t3.p2 и т.д

Наглая ложь. Не любой JOIN, а только INNER JOIN
АлексейК
Дата: 07.09.2005 15:21:31
ЛП
zam-ministra
Любой JOIN можно заменить комбинацией типа WHERE t1.p1=t2.p1 and t2.p1=t3.p2 и т.д

Наглая ложь. Не любой JOIN, а только INNER JOIN


?

кросс джоин where не нужен

left WHERE t1.p1=t2.p1 or t2.p1 is null
IgorM
Дата: 07.09.2005 16:09:01
АлексейК
left WHERE t1.p1=t2.p1 or t2.p1 is null

left WHERE - это такая конструкция SQL или пример left join? ;) Если второе, то это не правильно. Откуда в t2.p1 возьмутся null'ы?
ЛП
Дата: 07.09.2005 16:32:19
АлексейК
left WHERE t1.p1=t2.p1 or t2.p1 is null

Если left - это "типа left join", то оно неправильно.
vma_mnt
Дата: 07.09.2005 17:47:32
Если брать MS SQL, то его анализатор where заменяет на join
zam-ministra
Дата: 07.09.2005 18:20:10
Очень много мнений, но ни одного по существу!
Упрощаю есть две таблицы t1 с полями p1 (Primary Key) и p2 и таблица t2 c полем p1 (Внешний Key) и поле p2

ЗапросЫ

SELECT t1.p2, t2.p2
FROM t1,t2
WHERE t1.p1 = t2.p1

SELECT t1.p2, t2.p2
FROM t2 INNER JOIN t1 ON t2.p1 = t1.p1

Что быстрее???
adv
Дата: 07.09.2005 19:08:19
dim rst as recordset
dim rst1 as recordset
dim t1 as single
dim t2 as single
dim t3 as single
t1=timer()
set rst = currentdb.openrecordset("SELECT t1.p2, t2.p2 FROM t1,t2 WHERE t1.p1 = t2.p1")
t2=timer()
set rst1 = currentdb.openrecordset("SELECT t1.p2, t2.p2 FROM t2 INNER JOIN t1 ON t2.p1 = t1.p1")
t3=timer()
'msgbox "первый: " & t2-t1 & ", второй: " &  t3-t2
msgbox "быстрее " & iif(t2-t1 > t3-t2, "первый", "второй") & " на " & abs(t1 + t3 - 2*t2) & "c" 
adv
Дата: 07.09.2005 19:15:58
тормознул

msgbox "бестрее " & iif(t2-t1 > t3-t2, "второй", "первый") & " на " & abs(t1 + t3 - 2*t2) & "c"