본래 OUTER JOIN 의 사용경우가 아니라
INNER JOIN이 가능한 테이블간의 관계에서
INNER JOIN 을 사용하는 것과 OUTER JOIN을 사용하는 것 과의 속도에
차이가 있는지 궁금합니다.
일반적으로 제가 알고있기로는 INNER JOIN이 빠르다고 알고있는데
정확히 어떨지? 다른 분들의 생각을 알고 싶습니다.
흠.. 먼저 inner join, outer join에 대한 차이를 고려하지 않고 속도를 고려한다는 것은
속도위반이 아닐까 합니다.
A_table
a b
_________
가 1
나 2
다 3
B_table
a c
가 A
나 B
라 D
있다고 가정하구요. B_table의 a 칼럼은 A_table의 a칼럼을 참고한다고 할께요 (흔히들 FK라는 말을 하고 Reference라고들도 하던데..)
먼저 inner join을 하게 되면
select at.*, bt.* from A_table as at
inner join B_table bt on At.a = bt.a
그리고 left(right) outer join을 하게 되면
Left(right) outer join B_table on At.a = bt.a
(left, right는 각각 실행해 보셔야 합니다. )
결과는 각각 어떻게 다른가요?
그 차이를 본다면 inner join과 outer join에 속력을 묻는 것은 조금 다른 각도가 아닌가 합니다.
만약 두 명령으로 인해 생기는 결과가 같다면 조금 다른 문제겠지만요 ^^
음. ^^;
제 질문에 약간 오해의 소지가 있는거 같습니다.
제 질문을 다시 이야기하자면
"본래 OUTER JOIN 의 사용경우가 아니라"
<< 여리님이 설명하신 OUTER JOIN 의 역할을 제외하고
사원테이블과 직급테이블 간의 관계처럼
하나도 흘려지는 데이타가 없을 경우에
INNER JOIN 을 쓰는 것과 OUTER JOIN을 쓰는 것간의
속도 차이가 나는지에 대해 알고싶었던 것입니다. ^^;
sql에 대한 대한 실행계획을 보시기 바랍니다. [ctrl + L]
또한 set statistics time [on /off ]와
set showplan_text [on /off]를 통해 그 결과를 확인하실 수 있습니다.
그 데이터의 구조가 어떻게 되어 있다를 확인하기 이전에는
반드시 이 명령이 우월하다고 말씀을 드리기는 아마 곤란한 상황이 아닐까 합니다. ^^
답변 감사합니다. ^^