레이블이 #SQL머지조인인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #SQL머지조인인 게시물을 표시합니다. 모든 게시물 표시

2021년 10월 31일 일요일

오라클 조인방법, 머지 조인(Merge Join)

 

오라클 조인방법, 머지 조인(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)>

m79mQPAg728yjJc1E5xV5VikPp5JVUTz8u12iNio


<실행 순서>

1. ORDERED 힌트 구문에 따라 DEPT 테이블이 선행 테이블로 메모리에 올라가서 정렬 됩니다.


2. 후행 테이블 EMP 테이블도 메모리에 올라가서 정렬 됩니다. 그런다음 두 테이블을 병합(Merge)하여 원하는 결과를 추출 합니다. 

 

 

#머지조인, #MergeJoin, #SQL머지조인, #오라클, #오라클머지조인, #오라클, #오라클교육, #오라클강의, #오라클강좌

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...