SQLD () JOIN
EQUI(등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하는 경우로 대부분 PK<->FK 기반
조건은 WHERE 절에 기술한다
Non EQUI(비등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하지 않는 경우. = 이 아닌 BETWEEN, >, < 등으로 비교한다.
조인 기법 - NL JOIN, HASH JOIN , MERGE JOIN
[ NL JOIN : 중첩된 반복문과 유사한 방식으로 조인을 수행 ]
1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음
2. 선행 테이블의 조인 키 값을 가지고 후행 테이블에서 조인 수행
3. 선행 테이블의 조건을 만족하는 모든 행에 대해 1번 작업 반복 수행
[ SORT MERGE JOIN : 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행 ]
* NL JOIN은 주로 랜덤 액세스 방식으로 데이터를 읽는 반면 스캔 방식으로 데이터를 읽음
* 대량의 조인 작업에서는 HASH JOIN이 성능상 유리
* 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법
1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음
2. 선행 테이블의 조인 키를 기준으로 정렬 작업을 수행
3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음
4. 후행 테이블의 조인 키를 기준으로 정렬 작업을 수행
5. 정렬된 결과를 이용하여 조인을 수행하며 조인에 성공하면 추출버퍼에 넣음
[ HASH JOIN : 해싱 기법을 이용하여 조인을 수행 ]
1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음
2. 선행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해쉬 테이블을 생성
+ 조인 칼럼과 SELECT 절에서 필요로 하는 칼럼도 함께 저장됨
3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음
4. 후행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해당 버킷을 찾음
+ 조인 키를 이용해서 실제 조인될 데이터를 찾음
5. 조인에 성공하면 추출버퍼에 넣음