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'
[참고] 실행 계획으로 배우는 고성능 데이터베이스 튜닝
'프로그램 > DB' 카테고리의 다른 글
[튜닝] 해쉬 조인 (USE_HASH) (0) | 2022.11.03 |
---|---|
[튜닝] 중첩 루프 조인 (USE_NL) (0) | 2022.11.03 |
[ORACLE] 실수로 지운 데이터 조회 및 복구 (1) | 2022.09.26 |
[오라클] CONNECT BY LEVEL 을 이용한 특정 날짜 구간 조회 (0) | 2021.02.13 |
[Oracle] TRUNC 함수 (0) | 2012.10.30 |