두 테이블을 조인할 때, 해시(Hash) 자료구조를 사용해 빠르게 매칭시키는 조인 방식이다.
특히 조인 조건이 동등(Equal Join, =) 일 때 가장 효율적이다.
Hash Join = 작은 테이블을 해시로 만들고, 큰 테이블로 탐색하며 매칭시키는, 동등조인에 최적화된 고성능 조인 알고리즘을 말한다.
Hash Join은 일반적으로 두 단계로 구성된다.
key → row 형태로 메모리에 저장한다.큰 테이블(Big Table)의 각 row에 대해:
해시 테이블 조회는 평균적으로 O(1)
따라서 조인 비용이 주로 build 비용에만 영향받는다.
Nested Loop Join과 비교하면 훨씬 효율적이다.
동등 조인일 때 (a.id = b.user_id)
조인 키에 인덱스가 없어도 빠르게 처리해야 할 때
두 테이블이 모두 큰 경우에도 좋은 성능
대량 데이터 분석 / DW / OLAP 환경에서 자주 사용
→ 디스크로 spill 되어 성능 저하
→ 해시 충돌 증가 → 성능 저하
<, >, BETWEEN, LIKE 같은 비등가 조인→ Hash Join이 아예 불가능
| Join 방식 | 특징 | 언제 좋음 |
|---|---|---|
| Nested Loop Join | 반복 비교 | 한쪽 테이블이 매우 작고, 인덱스가 잘 있을 때 |
| Hash Join | 해시 테이블을 만들어 빠르게 매칭 | 큰 테이블끼리, 동등 조인 |
| Merge Join | 두 테이블을 정렬 후 병합 | 둘 다 조인 키로 정렬돼 있을 때 |