2011-09-02 2 views
2

필자는 항상 사용해야하는 SQL 결합 방법에 대해 궁금해했습니다. 다음 두 쿼리는 똑같은 기능을 수행합니다. 둘 중 더 나은 것은 무엇입니까? 요약이 두 SQL 결합 중 성능이 더 좋은 것은 무엇입니까?

SELECT p.LastName, p.FirstName, o.OrderNo 
FROM Persons p 
INNER JOIN Orders o 
ON p.P_Id = o.P_Id 

SELECT p.LastName, p.FirstName, o.OrderNo 
FROM Persons p, Orders o 
WHERE p.P_Id = o.P_Id 

, INNER 실제로 '여기서 x = y'는보다 더 나은 수행 JOIN 단어를 사용 하는가?

+2

가 아니가의 –

+0

가능한 중복은 어떤 합리적인 RDBMS에서 같은 실행 계획해야합니다 [A가 WHERE보다 빠른 조인을?] (http://stackoverflow.com/questions/1129923/is-a-join-faster-than-a-where) –

+1

당신은 쉽게 실행하고 실행 계획을보고 스스로를 찾을 수 있습니다 (나는 그 때문에 질문을 downvote하려고 유혹에 빠졌습니다) –

답변

1

사례 1은 SQL Server에서 사용되는 ANSI 표준 버전이며 사례 2는 이전에 사용되어졌으며 감가 상각 된 구문이었습니다. 쿼리 모두의 Go through this

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p INNER JOIN Orders o ON p.P_Id = o.P_Id 

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.P_Id = o.P_Id 

따라서 성능이 쿼리는 조금 다른 있었다면

가 있습니다 동일합니다. 이 경우 쿼리에서 즉

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id AND p.Id = 1 

대는

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.Id = 1 

완전히 다른 작동합니다. 두 쿼리의 출력은 다릅니다. 이 문제를 이해하기위한

... See this

1

중요하지 않습니다. 훌륭한 DBMS는 동일한 코드로 최적화하여 본질적으로 동일합니다.

관련 문제