본문 바로가기
데이터베이스/DB 이론

[데이터베이스] 5. 조인

by 상똥 2023. 2. 17.

[1. 조인]

1. 조인 : 두 개 이상의 릴레이션(테이블)에서 조인 조건에 맞는 두 릴레이션의 투플을 조합하여 만들어지는 투플로 구성된 새로운 릴레이션을 생성하는 연산

- 조건을 설정하여 원하는 데이터만 볼 수 있음

 

2. 조인의 종류

(1) 내부 조인(∩, inner join) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기

(2) 왼쪽 조인(left outer join) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기됨

(3) 오른쪽 조인(right outer join) : 오른쪽 테이블의 모든 행이 결과 테이블에 표기됨

(4) 합집합 조인(full outer join) : 두 개의 테이블을 기반으로 (조건에 만족하지 않더라도) 모든 행이 표기됨

Ex. 학생 명단 테이블과 교양과목 테이블

Ex. 내부 조인 : [학생명단]의 학번과 [교양과목 성적]의 학번이 같은 경우 조인

Ex. 왼쪽 조인 : [학생명단]에 있는 학번이 [교양과목 성적]의 학번과 동일한 경우 조인

Ex. 오른쪽 조인 : [교양과목 성적]에 있는 학번이 [학생명단]의 학번과 동일한 경우 조인

Ex. 합집합 조인 

 

[2. 조인의 원리]

1. 중첩루프 조인

- for문을 중첩하여 첫 번째 테이블의 행을 하나 읽은 후 두 번째 테이블의 행을 하나 읽어 조건에 맞는 레코드를 찾아 결괏값을 반환함

- 비용이 높기 때문에 대용량 데이터베이스에서는 비효율적

 

2. 정렬 병합 조인

- 각 테이블을 조인할 필드 기준으로 정렬한 후 조인 작업을 수행

- 인덱스가 없을 때 사용

 

3. 해시 조인

(1) 빌드 단계 : 테이블 중 하나를 기반으로 메모리 내 해시 테이블을 만드는 단계 (Ex. 용량이 더 작은)

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

(2) 프로브 단계 : 해시 테이블을 기반으로 일치하는 레코드를 찾는 단계

    - 테이블을 한 번씩만 읽으므로 중첩루프조인보다 성능이 좋음