오라클 조인방법, 머지 조인(Merge Join)
머지조인(Merge Join)은 조인시 각 테이블을 따로 정렬 후 그 결과를 병합(Merge)하는 집합 연산으로 소트를 동반하므로 소트 머지 조인이라고도 합니다. 배치성 JOB에는 효율적이나 OLTP성 업무에는 비효율적일 수 있는데, 모든 ROW를 FETCH한 후 처리할 때까지는 결과를 확인할 수 없는 집합연산을 하기 때문 입니다.
보통 조인 컬럼에 인덱스가 존재하지 않을 때 나타나며 NESTED LOOP JOIN , HASH JOIN과 달리 두 테이블 모두 메모리에 정렬 후 올라가므로 실행 계획상에 나타나는 테이블의 순서(드라이빙 테이블이 무엇인지)는 중요하지 않습니다.
조인되는 데이터영이 많지 않을 때 중첩루프 조인을 고려하며, 중첩루프 조인에서 Inner Table에 인덱스가 없을 때 우선적으로 해시조인을 고려해야 하며 마지막 선택이 머지 조인이 되어야 합니다. 대용량 데이터인 경우 대체로 느립니다.
ORDERED 힌트는 FROM절에 나타나는 테이블의 순서대로 왼쪽에서 오른쪽으로 조인을 하라는 힌트이며, USE_MERGE 힌트는 MERGE JOIN을 하라는 힌트 구문 입니다.
SELECT /*+ ORDERED USE_MERGE(E) */ E.empno, E.ename, D.dname FROM dept D, emp E WHERE D.deptno = E.deptno |
<실행계획(F10)>
<실행 순서>
1. ORDERED 힌트 구문에 따라 DEPT 테이블이 선행 테이블로 메모리에 올라가서 정렬 됩니다. 2. 후행 테이블 EMP 테이블도 메모리에 올라가서 정렬 됩니다. 그런다음 두 테이블을 병합(Merge)하여 원하는 결과를 추출 합니다. |
#머지조인, #MergeJoin, #SQL머지조인, #오라클, #오라클머지조인, #오라클, #오라클교육, #오라클강의, #오라클강좌