4.3.1 기본 메커니즘
- 해시 조인(Hash Join)도 소트 머지 조인처럼 두 단계로 진행된다
- Build 단계 : 작은 쪽 테이블(Build Input)을 읽어 해시 테이블(해시 맵)을 생성한다
- Probe 단계 : 큰 쪽 테이블 (Probe Input)을 읽어 해시 테이블을 탐색하면서 조인한다
4.3.2 해시 조인이 빠른 이유
- 해시 테이블을 PGA 영역에 할당하기 때문 → 래치 획득 과정 없이 PGA에서 빠르게 데이터를 탐색하고 조인한다
소트 머지 조인과 해시 조인의 성능차이
- 조인 오퍼레이션을 시작하기 전, 사전 준비작업에 따라 다르다
- 소트 머지 조인
- '양쪽' 집합을 모두 정렬해서 PGA에 담는다
- 두 집합 중 어느 하나의 크기가 크다면, Temp (디스크)를 쓰는 작업을 반드시 수반한다
- 해시 조인
- 양쪽 집합 중 어느 '한쪽'을 읽어 해시 맵을 만드는 과정이다
- 둘 중 작은 집합을 해시 맵 Build Input으로 선택하므로, Temp (디스크)를 쓰는 작업은 전혀 일어나지 않는다
4.3.4 해시 조인 실행계획 제어
세개 이상 테이블 해시 조인
- (T1+T2) + T3
- (T1+T3) + T2
- (T2+T1) + T3
- (T2+T3) + T1
- (T3+T1) + T2
- (T3+T2) + T1
4.3.5 조인 메서드 선택 기준
- 소량 데이터 조인할 때 → NL 조인
- 대량 데이터 조인할 때 → 해시 조인
- 대량 데이터 조인인데 해시 조인으로 처리할 수 없을 때 (조인 조건식이 등치(=) 조건이 아닐 때 ) → 소트 머지 조인
수행빈도가 매우 높은 쿼리에 대해선 아래와 같은 기준 제시 → 되도록이면 NL 조인을 쓰자!
- (최적화된) NL 조인과 해시 조인 성능이 같으면, NL 조인
- 해시 조인이 약간 더 빨라도 NL 조인
- NL 조인보다 해시 조인이 매우 빠른 경우, 해시 조인
'SQL 튜닝 > Ch04 조인 튜닝' 카테고리의 다른 글
4.4 서브쿼리 조인 (0) | 2024.11.12 |
---|---|
4.2 소트 머지 조인 (0) | 2024.11.12 |
4.1 NL 조인 (0) | 2024.11.12 |