CS 공부

CS) 조인의 종류와 원리

tmddnr3503 2025. 1. 13. 21:43

1. 조인의 종류

 조인 ( join )이란 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말합니다. 조인의 종류로는 내부 조인 ( inner join ), 왼쪽 조인 ( left outer join ), 오른쪽 조인 ( right outer join ), 합집합 조인 ( outer join )이 있습니다.

  • 내부 조인 ( inner join ) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기합니다.
    • 두 테이블 간의 교집합을 나타냅니다.
  • 왼쪽 조인 ( left outer join ) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기됩니다.
    • 테이블 A를 기준으로 테이블 A의 모든 값과 테이블 B 중 A와 일치하는 값이 표시됩니다.
  • 오른쪽 조인 ( right outer join ) : 오른쪽 테이블의 모든 행이 겨로가 테이블에 표기됩니다.
    • 테이블 B를 기준으로 테이블 B의 모든 값과 테이블 A 중 B와 일치하는 값이 표시됩니다.
  • 합집합 조인 ( full outer  ) : 두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기합니다.
    • 양쪽 테이블에서 일치하는 레코드와 함께 테이블 A와 테이블 B의 모든 레코드 집합을 생성합니다.

 

2. 조인의 원리

 1. 중첩 루프 조인

 중첩 루프 조인 ( NLJ, Nested Loop Join )은 중첩 for 문과 같은 원리로 조건에 맞는 조인을 하는 방법입니다. 추가로 중첩 루프 조인에서 발전한 조인할 테이블을 작은 블로 하나씩 조인하는 블록 중첩 루프 조인 ( BNL, Block Nested Loop )이라는 방식도 있습니다.

 

 2. 정렬 병합 조인

 정렬 병합 조인이란 각각의 테이블을 조인할 필드 기준으로 정렬하고 정렬이 끝난 이후에 조인 작업을 수행하는 조인입니다.

 

 3. 해시 조인

 해시 조인은 해시 테이블을 기반으로 조인하는 방법입니다. 두 개의 테이블을 조인한다고 했을 때 하나의 테이블이 메모리에 온전히 들어간다면 보통 중첩 루프 조인보다 더 효율적입니다. 

 

 빌드 단계

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

 

 프로브 단계

 프로브 단계 동안 레코드 읽기를 시작하며, 각 레코드에서 ''person.country_id"에 일치하는 레코드를 찾아서 결과값으로 반환합니다.