[데이터베이스] 조인의 종류와 원리

mainsain·2024년 2월 16일
0

CS

목록 보기
20/20
post-thumbnail

조인(join) : 하나의 테이블이 아닌, 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것

조인의 종류

1️⃣ 내부 조인 (inner join)

왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기한다.

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

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

2️⃣ 왼쪽 조인 (left outer join)

왼쪽 테이블의 모든 행이 결과 테이블에 표기된다.

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

오른쪽 테이블에 일치하는 항목이 없으면 해당 값은 null 값이 된다.

3️⃣ 오른쪽 조인 (right outer join)

오른쪽 테이블의 모든 행이 결과 테이블에 표기된다.

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

왼쪽 테이블에 일치하는 항목이 없으면 해당 값은 null 값이 된다.

4️⃣ 합집합 조인 (full outer join)

두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기한다.

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

일치하는 항목이 없으면 누락된 쪽에 null값이 포함되어 출력된다.

조인의 원리

1️⃣ 중첩 로프 조인 (NLJ, Nested Loop Join)

중첩 for문과 같은 원리로, 조건에 맞는 조인을 하는 방법

for each row in t1 matching reference key {
    for each row in t2 matching reference key { 
        if row satisfies join conditions, send to client 
    }
}

랜덤 접근에 대한 비용이 많이 증가하므로, 대용량의 테이블에선 사용하지 않는다.

2️⃣ 정렬 병합 조인

각각의 테이블을 조인할 필드 기준으로 정렬하고, 이후 조인 작업을 수행하는 조인

  • 조인에 사용할 적절한 인덱스가 없을 때
  • 대용량 테이블을 조인할 때
  • 조인 조건으로 < , > 등 비교 연산자가 있을 때 사용한다.

3️⃣ 해시 조인

해시 테이블을 기반으로 조인하는 방법

  • 하나의 테이블이 메모리에 온전히 들어간다면, 보통 중첩 루프 조인보다 효율적이다.
  • 동등(=) 조인에서만 사용할 수 있다.

refer

사진참조

profile
새로운 자극을 주세요.

0개의 댓글