4.7 조인의 원리
2026-06-08
스터디를 함께 진행했음
중첩 루프 조인
for문과 같은 원리로 조건에 맞는 조인을 하는 방법
랜덤 접근에 대한 비용이 많이 들기 때문에 대용량의 테이블에서는 사용하지 않는다.
정렬 병합 조인
각각의 테이블을 조인할 필드 기준으로 정렬하고 정렬이 끝난 이후에 조인 작업을 수행하는 조인
조인할 때 쓸 적절한 인덱스가 없고, 대용량의 테이블에서 조인 조건으로 <, > 같은 범위 비교 연산자가 있을 때 쓴다.
해시 조인
해시 테이블을 기반으로 조인하는 방법.
하나의 테이블이 메모리에 들어갈 수만 있다면 효율적임. 메모리에 들어갈 수 없다면 디스크를 사용하는 비용이 추가된다.
동등 조인에서만 사용할 수 있다.
MySQL
- 빌드 단계
- 입력 테이블 중 하나를 기반으로 메모리 내 해시 테이블을 빌드하는 단계
- 둘 중에 바이트가 더 작은 테이블을 기반으로 해시 테이블을 빌드한다.
- 조인에 사용되는 키가 해시 테이블의 키로 사용된다.
- 프로브 단계
- 레코드를 읽으면서 결과값으로 반환한다.
- 각 테이블 자체는 한번씩만 읽게 되어서 중첩 루프 조인보다는 성능이 더 좋다.