LEFT JOIN или без него

  • Автор темы Emperor
  • Дата начала

Emperor

Guest
LEFT JOIN или без него

Дано.
tab1 (id,name)
tab2 (id,name,tab1_id)

Запрос 1
SELECT t1.name, t2.name FROM t1,t2 WHERE t2.t1_id=t1_id;

Результат: одна колонка с t1.name, вторая с t2.name

Запрос 2
SELECT t1.name,t2.name FROM t2 LEFT JOIN t1 ON t2.t1_id=t1.id

Результат такой же.
Вопрос в том, какой из запросов правильнее использовать?



А если таких таблиц много, т.е.

tab1 (id,name)
tab2 (id,name)
tab3 (id,name)
tab4 (id,name,tab1_id,tab2_id,tab3_id,)

И все они "складываются" с помощью LEFT JOIN ? т.е.

SELECT t1.name,t2.name,t3.name,t4.name FROM t4 LEFT JOIN t1 ON t4.t1_id=t1.id LEFT JOIN t2 ON t4.t3_id=t4.id LEFT JOIN t3 ON t4.t3_id=t3.id;

Как присутствие LEFT JOIN влияет на скорость работы запроса ?
 

Demiurg

Guest
LEFT JOIN и INNER JOIN(,) - две разные вещи. В случае LEFT JOIN все записи из таблицы t2 попадают в результат.
 

Demiurg

Guest
table1:
id|a
1 a
2 b
3 c

table2:
id|a
2 f
3 g

select * from table1 , table2 where table1.id = table2.id:
id|a|id|b
2 b 2 f
3 с 3 g

select * from table1 left join table2 using(id)
id|a|id|b
1 a null null
2 b 2 f
3 с 3 g

понятно ?
 
Сверху