조인 join operation

agnusdei·3일 전
0

Database

목록 보기
27/30

■ 조인 연산 (JOIN Operation)

1. 개념 및 원리

조인(JOIN)이란, **두 개 이상의 릴레이션(테이블)**을 **공통된 속성(키)**을 기준으로 결합하여 새로운 릴레이션을 생성하는 연산입니다. 이는 관계형 모델에서 **데이터 분리(정규화)**로 인해 나뉜 테이블을 논리적으로 다시 연결할 때 사용됩니다.

● 조인의 목적

  • 논리적 독립성 유지하면서 관계 표현
  • 정규화된 테이블을 결합해 의미 있는 정보 생성

● 조인의 수학적 기반

  • 카티션 곱(×)시그마(σ) 조건 필터링
  • 예: A ⋈ B ON A.x = B.x = σ(A.x = B.x)(A × B)

2. 조인의 종류

구분설명SQL 예시
내부 조인 (Inner Join)양쪽 테이블에서 조건을 만족하는 튜플만 결과에 포함SELECT * FROM A JOIN B ON A.id = B.id
외부 조인 (Outer Join)조건 불충족 시에도 한쪽 데이터를 유지LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
자연 조인 (Natural Join)공통 속성명을 자동으로 매칭하여 등가 조건 생성SELECT * FROM A NATURAL JOIN B
자기 조인 (Self Join)동일 테이블을 두 번 사용하여 조인FROM Emp A, Emp B WHERE A.manager_id = B.id
교차 조인 (Cross Join)조건 없이 모든 조합 생성 (카티션 곱)SELECT * FROM A CROSS JOIN B

3. 조인 알고리즘 (Join Processing Algorithms)

조인은 데이터 양이 많을 경우 성능에 큰 영향을 주므로, RDBMS는 효율적인 조인 알고리즘을 사용합니다.

(1) Nested Loop Join (중첩 반복 조인)

  • 기본 알고리즘, 모든 경우의 수를 비교
  • 외부 루프 테이블의 각 행마다 내부 테이블 전체를 스캔
  • 인덱스가 있으면 효율 상승 (Index Nested Loop)

동작 원리

for each row R1 in outer_table:
    for each row R2 in inner_table:
        if join_condition(R1, R2):
            emit(R1, R2)

특징

  • 단순하고 구현 쉬움
  • 작은 테이블 + 인덱스가 존재할 경우 효과적
  • 대용량에는 비효율적 (O(N*M))

(2) Hash Join (해시 조인)

  • 한쪽 테이블을 해시 테이블로 만들어, 나머지 테이블의 조건값으로 빠르게 조회
  • 등가 조인에 최적

단계

  1. Build: 작은 테이블을 해시 테이블로 구성
  2. Probe: 큰 테이블에서 해시값 탐색

특징

  • 등가 조인(=)에서만 사용 가능
  • 정렬 불필요 → 빠른 속도
  • 메모리 기반이므로 메모리 적절할 경우 고속

(3) Sort-Merge Join (정렬 병합 조인)

  • 양쪽 테이블을 조인 키로 정렬한 뒤, 병합하는 방식
  • 범위 조인 가능

단계

  1. 두 테이블 정렬
  2. 포인터를 유지하며 병합 탐색

특징

  • 대량의 정렬된 데이터에 적합
  • 등가 + 범위 조건 모두 가능
  • 디스크 정렬 비용 발생 가능

정리: 조인 알고리즘 비교표

알고리즘장점단점적합한 상황
Nested Loop단순, 인덱스 활용 시 빠름인덱스 없으면 비효율소규모, 인덱스 있음
Hash Join빠름, 정렬 불필요범위 조건 불가, 메모리 사용대용량, 등가 조인
Sort-Merge범위 조건 가능정렬 비용 있음정렬된 대량 데이터

4. 실행 계획에서의 조인 전략 선택

DBMS 옵티마이저는 다음 요소를 고려하여 조인 전략을 자동 선택합니다:

  • 통계 정보 (카디널리티, 분포)
  • 인덱스 유무
  • 조인 조건 (등가 vs 범위)
  • 메모리 사용 가능량
  • 조인 순서 최적화 (Join Reordering)

5. 기술사 관점 정리 포인트

  • 조인 = 관계 대수 기반 데이터 결합 연산
  • 조인 알고리즘 선택은 DBMS 옵티마이저가 담당
  • 각 조인 알고리즘의 시간복잡도와 사용 조건 암기
  • 정규화된 테이블 조합을 위해 필수 연산

6. 어린이 버전 요약

조인은 레고 블록을 연결해서 하나의 멋진 장난감을 만드는 것과 비슷해요!

  • 중첩 반복(Nested Loop): 모든 블록을 다 비교해봄
  • 해시 조인(Hash Join): 레고 이름표로 빠르게 찾음
  • 정렬 병합(Sort-Merge): 색깔 순서대로 정리해서 붙이기

0개의 댓글