Rookiss Part5 데이터베이스 : Merge 조인
🙇♀️Merge 조인
Merge(병합) 조인 = Sort Merge(정렬 병합) 조인
🪐
1단계 : Sort (이미 정렬되어 있으면 스킵) O(N * Log(N))
One-To-Many (players는 중복이 없다) 2단계 : Merge OUTER [0, 1, 3, 4, 9] -> N INNER [0, 0, 2, 5, 9] -> M O(N + M)
Many-To-Many (players는 중복이 있다) OUTER [0, 0, 0, 0, 0] -> N INNER [0, 0, 0, 0, 0] -> M O(N * M)
ONE-TO-MANY가 효율이 좋다
MANY-TO-MANY도 사용하긴 한다
🪐결론
- ONE-TO-MANY (OUTER가 UNIQUE해야 함 => PK, UNIQUE)
- MERGE 조인도 조건이 붙는다
- 일일히 RANDOM ACCESS -> CLUSTERED SCAN 후 정렬
Merge -> Sort Merge 조인
- 양쪽 집합을 Sort(정렬)하고 Merge(병합)한다
- 이미 정렬된 상태라면 Sort는 생략 (특히, Clustered로 물리적 정렬된 상태라면 Best)
- 정렬할 데이터가 너무 많으면 GG -> Hash
- Random Access위주로 수행되진 않는다
- Many-To-Many(다대다)보다는 One-To-Many(일대다) 조인에 효과적
- PK, UNIQUE