조인 순서 때문에 질문 있습니다. 0 1 1,461

by 먹은사과 [Oracle 기초] 조인 순서 [2014.04.26 16:27:30]


보통 

1. From  2. Where 3. Group by 4. Having 5. Select 6. Order by

실행순서가 이렇게 알고 있는데요.

 

조인이 들어갈 경우 실행 순서가 어떻게 되는지 궁금하네요

where 절을 먼저 호출하는 지 아니면 조인을 먼저하는지요

예를 들어서 A ,B 라는 테이블을 join 한다고 하면 id 값으로 조인하고 조건절이 있다고 한다면요 

select *
from A, B

where A.id = B.id

AND A 테이블 조건들
AND B 테이블 조건들 ***********

이런 식으로 될텐데 

select v1.*, v2.* 

from (select *

         from  A

         where A 조건들 ) AS v1,

       (select * 

        from B 

       where B 조건들 ) AS v2

WHERE v1.id = v2.id

만약 조인 순서가 where 절보다 선행 된다면 후자의 쿼리가 더 빠를것 같아서요 

 

by 마농 [2014.04.27 13:46:23]

적어 놓은 순서는 문맥의 흐름상 순서입니다.
SQL 구문을 해석하고 처리하는 순서입니다.
실제로 데이터를 처리하는 순서와는 조금 다르구요.
조인의 원리와 실행계획을 이해하셔야 합니다.
http://www.gurubee.net/article/62004
마지막으로 적으신 구문처럼 인라인 뷰를 사용한다고 해서
꼭 인라인 뷰 안쪽 내용이 먼저 수행되는 것은 아닙니다.
이 쿼리는 실제로는 쿼리 변환과정을 거쳐서 일반 조인문처럼 동작하게 됩니다.
즉, 두개 SQL의 실행계획은 동일하게 될것으로 예상됩니다.
결국 실행계획을 확인하셔야 하는 부분입니다.
복잡하게 작성하는것 보다는 간결하게 작성하는 것이 좋습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입