11/20

졸용·2025년 11월 20일

TIL

목록 보기
118/144

🔹 Hash Join이란?

두 테이블을 조인할 때, 해시(Hash) 자료구조를 사용해 빠르게 매칭시키는 조인 방식이다.
특히 조인 조건이 동등(Equal Join, =) 일 때 가장 효율적이다.

Hash Join = 작은 테이블을 해시로 만들고, 큰 테이블로 탐색하며 매칭시키는, 동등조인에 최적화된 고성능 조인 알고리즘을 말한다.



🔸 동작 방식

Hash Join은 일반적으로 두 단계로 구성된다.

1️⃣ Build 단계

  • 보통 더 작은 테이블(Small Table) 을 선택한다.
  • 조인 키(예: user_id)를 기준으로 해시 테이블(Hash Table) 을 만든다.
  • key → row 형태로 메모리에 저장한다.

2️⃣ Probe 단계

  • 큰 테이블(Big Table)의 각 row에 대해:

    • 해당 조인 키로 방금 만든 Hash Table을 조회한다.
    • 매칭되는 row가 있으면 결과에 포함한다.

🔸 왜 빠른가?

  • 해시 테이블 조회는 평균적으로 O(1)

  • 따라서 조인 비용이 주로 build 비용에만 영향받는다.

  • Nested Loop Join과 비교하면 훨씬 효율적이다.

    • Nested Loop Join: O(N × M)
    • Hash Join: O(N + M) 수준


🔹 언제 Hash Join이 쓰일까?

  • 동등 조인일 때 (a.id = b.user_id)

  • 조인 키에 인덱스가 없어도 빠르게 처리해야 할 때

  • 두 테이블이 모두 큰 경우에도 좋은 성능

  • 대량 데이터 분석 / DW / OLAP 환경에서 자주 사용



🔸 언제 Hash Join이 불리할까?

✖ 해시 테이블이 메모리에 다 안 올라가는 경우

→ 디스크로 spill 되어 성능 저하

✖ 조인 키가 매우 넓은 범위일 때

→ 해시 충돌 증가 → 성능 저하

<, >, BETWEEN, LIKE 같은 비등가 조인

→ Hash Join이 아예 불가능



🔹 다른 조인 방식과 비교

Join 방식특징언제 좋음
Nested Loop Join반복 비교한쪽 테이블이 매우 작고, 인덱스가 잘 있을 때
Hash Join해시 테이블을 만들어 빠르게 매칭큰 테이블끼리, 동등 조인
Merge Join두 테이블을 정렬 후 병합둘 다 조인 키로 정렬돼 있을 때
profile
꾸준한 공부만이 답이다

0개의 댓글