SORT MERGE JOIN문을 알아보자!
해시 조인은 non equi join
시 사용할 수 없다.
select /*+ leading(s e) use_merge(e) */ e.ename, e.sal, s.grade
from emp e, salgrade s
where e.sal between s.losal and s.hisal;
먼저, 정렬(sort)를 하고서 조인을 하는 것이다.
select /*+ leading(d e) use_merge(e) */ e.ename, d.loc
from emp e, dept d
where e.deptno=d.deptno;
조인 전에, e.deptno
와 d.deptno
를 정렬을 한다. 그 후 몰려있기 때문에 금방 조인을 할 수 있다.
먼저, emp 테이블을 먼저 읽으면, dept를 먼저 읽었을 때 보다 성능이 좋지 않아진다.
조인하는 횟수가 적을 수록 좋기 때문이다. 결국 소트 머지 조인도 작은 테이블이 앞에 와야 좋다.