3중join
title: 2025-11-22 author: 강병호 (이름) date: 2025-11-22 category: TIL/강병호/2025/11 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
3중 조인부터는 동작 방식이 약간 바뀝니다. 어떻게 동작하는지, 그리고 그 방식이 성능에 어떠한 영향을 주는지 설명해 주세요.
JOIN은 이론적으로는 두 테이블을 붙이는 이항 연산이다. 그렇기에 3중 조인 부터는 내부적으로 2개씩 여러 번 JOIN을 수행하게 된다.
- 2중 조인 : 어떤 알고리즘을 이용해서 JOIN할지만 고민
- 3중 조인
- 어떤 순서로 테이블들을 먼저 붙일지
- 각 단계별 어떤 join알고리즘을 사용할지
위 두 가지를 고려해야한다.
SELECT ...
FROM A
JOIN B ON A.id = B.a_id
JOIN C ON B.id = C.b_id;
해당 기준으로 물리적으로 수행 할 시 다음과 같은 구조로 이어질 수 있따.
- ((A ⋈ B) ⋈ C)
- (A ⋈ (B ⋈ C))
최종 결과는 같을 수 있으나 이는 중간 결과 크기가 완전히 달라 질 수 있다.
A : 1_000_000 행
B : 100_000 행
C : 1_000 행
위 테이블로 1 ,2 를 각각 수행하면 다음과 같이 처리된다.
- A ⋈ B : 중간 결과 R1 이 90만행이 되는경우 R1 ⋈ C를 붙이게 되는데 이는 중간에 90만 행 결과를 한 번 만들게 된다.
- B ⋈ C : 중간 결과 R1이 5천행 짜리로 되는 경우 R1 ⋈ A 를 붙이게 되는데 중간에 5천 결과를 사용하기에 연산의 비용이 훨씬 적게 든다.
이는 중간 결과를 생성하기 때문에 디스크 I/O, 메모리, CPU 연산 수 모두 큰 차이를 유발하게 된다.
즉, 3중 조인은 어떤 순서로 테이블을 붙이느냐 가 추가되어 성능의 핵심이 된다.