본문 바로가기
CS 공부

[DB] 조인의 종류 및 원리

by 숭늉다섯 2024. 1. 25.

조인(join)

  • 하나의 테이브링 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 과정
  • 조인의 종류로는 내부조인, 왼쪽조인, 오른쪽 조인, 합집합조인이 있다. 

 

내부조인 (Inner join)

  • 두 테이블 간에 교집합을 나타낸다.

SELECT * FROM TableA A
INNER JOIN TableB B ON
A.key = B.key

 

 

왼쪽조인 (Left Outer Join)

  • 테이블 b와 일치하는 부분과 테이블 a 를 기준으로 완전한 레코드 집합을 생성

SELECT * FROM TableA A
LEFT JOIN TableB B ON
A.key = B.key

 

 

 

오른쪽조인 (Right Outer join)

  • 테이블 a와 일치하는 부분과 테이블 b를 기준으로 완전한 레코드 집합을 생성

SELECT * FROM TableA A
RIGHT JOIN TableB B ON
A.key = B.key

 

 

합집합 조인 (Full Outrr Join)

  • 테이블 a와 테이블 b의 모든 레코드 집합을 생성

SELECT * FROM TableA A
FULL OUTER JOIN TableB B ON
A.key = B.key

 

 

상호 조인 (Cross Join)

  • 테이블 b 테이블 a에 모든 행을 조인 

SELECT *
FROM <table a>
    CROSS JOIN <table b>

 

 

 

조인의 원리

  1. 중첩루프 조인(NESTED LOOP JOIN)
    - 중첩 for문과  같은 원리로 조건에 맞는 조인을 하는 방법이다. 
    - Driving Table이란 JOIN을 할 때 먼저 액세스 되어 ACCESS PATH를 주도하는 테이블을 Driving Table이다
       즉, 조인 할 때 먼저 액세스 되는 테이블이라고 한다

    장단점
    1. 인덱스에 의한 랜덤 액세스에 기반하고 있어, 대량의 데이터 처리에 적합하지 않다 
    2. Driving Table로 데이터가 적거나 where 절 조건으로 row의 숫자를 줄일 수 있는 테이블이여야 한다
    3. Driving Table에는 조인을 위한 적절한 인덱스가 생성되어야 한다
    4. 선행 테이블의 결과를 통해 후행 테이블을 액세스 할때 랜덤 I/O가 발생한다.


  2. 정렬 병합 조인
    - 각각의 테이블을 조인 할 때 필드 기준으로 정렬하고, 정렬 이후에 작업을 수행하는 조인
    - 조인할 때 적절한 인덱스가 없고, 대용량의 테이블 들을 조인하고, 조인 조건으로 <,> 등 범위 비교 연산자가 있을 때 사용

  3. 해시조인
    - 해시 테이블을 기반으로 조인하는 방법
    - 하나의 테이블이 메모리에 온전히 들어간다면, 중첩루프보다 더 효율적이다.
    - MySQL 8.0.18 릴리스와 함께 기능을 사용 할 수 있게 됨

 빌드 단계

- 입력 테이블 중 하나를 기반으로 메모리 내 해시 테이블을 빌드하는 단계

- 조인에 사용되는 필드가 해시 테이블의 키로 사용된다

 

 

 

프로프
- 레코드를 읽기 시작하며, 레코드에서 일치하는 레코드를 찾아서 결과값으로 반환

- 사용 가능한 메모리양은 시스템 변수 join_bufer_size에 의해 제어되며, 런타임시에 조정 할 수있다


참고자료

https://sparkdia.tistory.com/17

 

테이블 조인 종류(Table Join Type)

데이터베이스에서 데이터는 다수의 테이블에 나뉘어 저장되어 있습니다. 데이터의 중복을 제거하고 무결성을 보장하기 위해서 데이터 성격에 따라 분류하여 테이블에 저장을 하는 겁니다. 이

sparkdia.tistory.com

https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/

 

SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)

조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부

hongong.hanbit.co.kr

https://velog.io/@eunhye_/SQL-%EC%A1%B0%EC%9D%B8Join-%EC%88%98%ED%96%89-%EC%9B%90%EB%A6%AC#nl-joinnested-loop-join 

 

SQL 조인(Join) 수행 원리 (NL Join, Sort Merge Join, Hash Join)

SQL에서 조인이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산을 뜻합니다.

velog.io

 

'CS 공부' 카테고리의 다른 글

옵저버 패턴  (1) 2024.02.13
프록시 패턴과 프록시 서버  (0) 2024.02.13
전략패턴 (Strategy Pattern)  (0) 2024.02.08
팩토리 패턴(factory pattern)  (1) 2024.02.08