소트 머지 조인 기본 구조

SELECT A.COL1, A.COL2, B.COL2, B.COL3
  FROM TABLE_A A, TABLE_B B
 WHERE A.COL1 = B.COL1
   AND A.COL2 >= TRUNC(SYSDATE - 5)
   AND B.COL3 >= TRUNC(SYSDATE - 10)

TABLE_A에 엑세스하여 데이터 추출 후 조인 컬럼인 A.COL1 컬럼 기준으로 정렬을 수행한다. 그다음으로 TABLE_B에 엑세스하여 데이터 추출 후 조인 컬럼인 B.COL1 컬럼 기준으로 정렬을 수행한다.

정렬된 두 개의 집합에 대해 COL1 컬럼 기준으로 머지 조인을 수행하여 결과를 추출한다.

 

소트 머지 조인은 정렬 작업이 다른 조인 방식보다 많이 발생할 수 있기 때문에 중첩 루프 조인이나 해쉬 조인에 비해 성능이 저하되며, 대용량 데이터에서는 소트 머지 조인보다 해쉬 조인을 이용하는 것이 유리하다.

(소트 머지 조인은 거의 사용하지 않음)

 

#실행 계획 샘플
SELECT STATEMENT
  MERGE JOIN
    SORT (JOIN)
      TABLE ACCESS BY INDEX ROWID OF 'TABLE_A'
        INDEX RANGE SCAN OF 'A.COL2_IDX'
    SORT (JOIN)
      TABLE ACCESS BY INDEX ROWID OF 'TABLE_B'
        INDEX RANGE SCAN OF 'B.COL3_IDX'

 

[참고] 실행 계획으로 배우는 고성능 데이터베이스 튜닝

+ Recent posts