👉 JOIN 알고리즘 정의
- 데이터를 결합하는 방법론이며, 각각 다른 상황에서 최적의 성능을 제공할 수 있음
- 일반적인 JOIN 유형(예: INNER JOIN, LEFT JOIN 등)과는 다르게, 데이터베이스 쿼리 최적화기가 내부적으로 결정하는 실행 계획의 일부
👉 종류와 특징
- SORT-MERGE JOIN
- 두 데이터 세트를 먼저 정렬하고, 그 다음 정렬된 순서를 따라 행을 병합
- 크기가 비슷하고 이미 잘 정렬된 테이블에 효과적
- 인덱스가 없는 큰 테이블에서 효율적일 수 있음
- NESTED-LOOPS JOIN
- 외부 루프(첫 번째 테이블)와 내부 루프(두 번째 테이블)를 사용하여 행을 결합
- 각 외부 루프 행에 대해, 내부 루프는 전체 또는 일부를 스캔하면서 일치하는 행을 찾음
- 일반적으로 한 쪽 테이블이 작고 인덱스가 있는 경우에 효율적
- HASH JOIN
- 두 데이터 세트 중 하나를 사용하여 해시 테이블을 생성하고, 다른 하나를 사용하여 해시 테이블을 탐색
- 큰 테이블 간의 JOIN이나 인덱스가 없는 테이블에서 효과적
- 대량의 데이터를 빠르게 처리할 수 있지만, 메모리 사용량이 많을 수 있음
- CLUSTER JOIN
- 물리적으로 클러스터링된 테이블(예: 클러스터링 인덱스에 의해 정렬된 테이블)에 특화된 방법
- 클러스터링된 테이블에서 데이터가 물리적으로 인접해 있기 때문에 JOIN 성능이 향상될 수 있음
- 클러스터링된 인덱스가 있는 테이블 간의 JOIN에서 주로 사용
➕ 클러스터링된 테이블과 힙 테이블(비클러스터링)
- 클러스터링된 테이블
- 클러스터링된 테이블에서는 데이터가 특정 키(클러스터링 키)에 따라 물리적으로 정렬되어 저장
- 이 키의 값에 따라 데이터가 디스크 상의 연속적인 공간에 저장되어, 특정 키 값을 기준으로 한 검색과 접근이 빠름
- 많은 관계형 데이터베이스 시스템에서 클러스터링된 테이블은 특히 범위 쿼리나 조인 연산에 효과적
- 힙 테이블(비클러스터링)
- 비클러스터링된 테이블, 또는 힙 테이블에서는 데이터가 특정한 순서 없이 저장됨
- 새로운 데이터는 테이블의 끝에 추가되거나, 빈 공간을 찾아 채워짐
- 이러한 방식은 데이터 삽입이 빈번한 환경에서 유리할 수 있지만, 특정 데이터를 찾기 위해서는 전체 테이블을 스캔하거나 별도의 인덱스를 사용해야 함
- ⇒ 기본적으로 생성되는 테이블이 클러스터링된 테이블인지 아닌지는 사용하는 DBMS와 해당 DBMS의 기본 설정에 따라 달라짐