2011-04-25 5 views
4

여러 테이블에서 데이터를 선택하는 두 가지 방법의 차이점은 무엇입니까? 처음에는 JOIN을 사용하지 않지만 두 번째는 사용하지 않습니다. 어느 것이 더 바람직한 방법입니까?어떤 방법으로 mysql 테이블에 가입하는 것이 더 낫습니다?

방법 1 :

SELECT t1.a, t1.b, t2.c, t2.d, t3.e, t3.f 
    FROM table1 t1, table2 t2, table3 t3 
WHERE t1.id = t2.id 
    AND t2.id = t3.id 
    AND t3.id = x 

방법 2 : 나는 많은 차이가 있다고 생각하지 않습니다

SELECT t1.a, t1.b, t2.c, t2.d, t3.e, t3.f 
FROM `table1` t1 
JOIN `table2` t2 ON t1.id = t2.id 
JOIN `table3` t3 ON t1.id = t3.id 
WHERE t1.id = x 
+0

[크로스 조인에 비해 내부 조인의 성능] 가능한 복제본 (http://stackoverflow.com/questions/670980/performance-of-inner-join-compared-to-cross-join) – soulmerge

답변

-1

. EXPLAIN 문을 사용하여 MySQL이 다르게 수행하는지 확인할 수 있습니다. 이 사소한 예 때문에 나는 그것이 중요한지 의심 스럽다.

2

간단한 경우에 해당합니다. 방법 1에서 'JOIN'키워드가 없더라도 여전히 조인을하고 있습니다.

그러나 방법 2는 WHERE 절을 통해 수행 할 수없는 JOIN 조건에서 추가 조건을 허용하는 유연성을 제공합니다. 같은 테이블에 대해 별칭 다중 조인을 수행하는 경우와 같은 경우. whereclause에 두 개의 추가 조건을 두는

select a.id, b.id, c.id 
from sometable A 
left join othertable as b on a.id=b.a_id and some_condition_in_othertable 
left join othertable as c on a.id=c.a_id and other_condition_in_othertable 

두 조건이 WHERE 절에 같은 시간에 사실 수 없기 때문에, 쿼리가 아무것도 돌려주지 않는 원인이 있지만, 조인 가능합니다.

관련 문제