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;

해당 기준으로 물리적으로 수행 할 시 다음과 같은 구조로 이어질 수 있따.

  1. ((A ⋈ B) ⋈ C)
  2. (A ⋈ (B ⋈ C))

최종 결과는 같을 수 있으나 이는 중간 결과 크기가 완전히 달라 질 수 있다.

A : 1_000_000 행

B : 100_000 행

C : 1_000 행

위 테이블로 1 ,2 를 각각 수행하면 다음과 같이 처리된다.

  1. A ⋈ B : 중간 결과 R1 이 90만행이 되는경우 R1 ⋈ C를 붙이게 되는데 이는 중간에 90만 행 결과를 한 번 만들게 된다.
  2. B ⋈ C : 중간 결과 R1이 5천행 짜리로 되는 경우 R1 ⋈ A 를 붙이게 되는데 중간에 5천 결과를 사용하기에 연산의 비용이 훨씬 적게 든다.

이는 중간 결과를 생성하기 때문에 디스크 I/O, 메모리, CPU 연산 수 모두 큰 차이를 유발하게 된다.

즉, 3중 조인은 어떤 순서로 테이블을 붙이느냐 가 추가되어 성능의 핵심이 된다.

results matching ""

    No results matching ""