본문 바로가기
데이터베이스

SQL Sort Merge Join(소트머지 조인)

by 데이널 2023. 11. 30.

이번 포스팅에서는 여러 조인 방식 중에서 Sort-Merge Join에 대해 살펴보겠습니다. 실제 사례에서는 Sort Merge를 사용하는 경우는 많지 않습니다. 하지만 검색 방식이 적합 할 경우 다른 조인보다 확인이 좋은 성능을 나타냅니다. Sort Merge Join의  해당 기능, 장단점을 살펴보겠습니다.

 

 

Sort Merge Join이란

소트머지 조인은 데이터 정렬을 활용하여 정렬된 두 테이블의 행을 효율적으로 결합하는 조인 알고리즘입니다.  Join Key를 기준으로 두 테이블을 모두 정렬해야 하는 다소 큰 데이터 세트를 조인할 때 특히 효과적입니다. 두개의 테이블에서 각각 Join 대상을 먼저 읽을 후 정렬하여 merge하는 방식입니다. 

 

수행 과정

먼저 조인 키를 기준으로 두 테이블을 각각 정렬하는 작업을 합니다. 정렬이 완료되면 알고리즘은 동일한 조인 키를 사용하여 행을 비교하고 일치시켜 두 테이블을 병합합니다. 결과는 원하는 순서로 결합된 행이 있는 병합된 Result set입니다.

  1. Outer Table의 인덱스를 통해 테이블 찾기
  2. Outer Table을 Join 컬럼 기준으로 정렬
  3. Inner Table도 인덱스를 기준으로 테이블 찾기
  4. Inner Table을 Join 컬럼 기준으로 정렬
  5. 두 Table을 Join (PGA영역에서 진행)

 

Sort Merge Join
Sort Merge Join

 

Sort Merge Join의 특징

소트머지 조인은 PGA에서 수행되어 Random Access 부하가 없으나, 불필요한 Sorting요구되는 조인 방식입니다. 또한 아래와 같은 특징이 있습니다. 

  • Outer Table에 Sorting 대체할 Index 존재 시 정렬 미수행
  • Inner Table은 Sorting 대체할 Index 존재해도 정렬이 수행됨
  • Join 조건식이 등치 조건이 아닐 때에도 활용 가능
  • 데이터를 순차적으로 처리하기 때문에 메모리에 완전히 들어가지 않는 테이블을 처리할 때 효율성이 특히 좋음

 

Sort Merge Join 고려사항

1. 인덱스 유무

  • 효과적인 정렬을 위해서 조인 열에 인덱스가 있는지 확인필요(인덱스가 있어야 Sort 오버헤드를 크게 줄일 수 있음)

2. 메모리 관리

  • 데이터가 대량일 때 Sort 단계에서 메모리 사용량을 모니터링하고 관리 필요(효율적인 메모리 관리는 전반적인 쿼리 성능에 영향을 미칠 수 있음)

장점

  • PGA 영역에 두 Table을 모두 담는 경우 → 빠른 속도(Random Access 부하가 없으므로)
  • Merge 시 이전 수행 범위는 제외하고 수행됨

단점

  • Join과 직접적 연관 없는 Sorting이 요구된다는 점