JOIN이란?
- 두 개의 테이블을 하나의 집합으로 만드는 연산이다
JOIN의 종류
- INNER JOIN
- 기준 칼럼이 같은 경우에만 테이블에 포함시킨다
- LEFT OUTER JOIN
- INNER JOIN + 칼럼이 같지 않은 왼쪽 테이블도 포함
- RIGHT OUTER JOIN
- INNER JOIN + 칼럼이 같지 않은 오른쪽 테이블도 포함
- FULL OUTER JOIN
- CROSS JOIN
- 두 테이블에서 가능한 모든 조합 반환
- 반환된 레코드의 수는 N*M
- 기준 칼럼이 필요하지 않다
JOIN 알고리즘
- Nested Loop Join
- 한 테이블의 크기가 상대적으로 작을 때, 혹은 조인 조건이 복잡할 때 사용한다
- 한 테이블의 각 레코드에 대해 다른 테이블의 모든 레코드를 순차적으로 검색한다
- 이때 만약 조인 조건이 맞는다면 결과 집합에 추가한다
- Sort Merge Join
- 두 테이블이 정렬된 상태에서 JOIN 할 때 사용한다
- 조인 조건이 등호(=)가 아니라 부등호일 경우에도 정렬 후 사용한다
- 두 테이블의 정렬된 순서에 따라 행을 순차적으로 검사하면서 조인 조건에 맞는 행을 결과 집합에 추가한다
- Hash Join
- 메모리에 충분한 공간이 있어서 해시 테이블을 구성할 수 있는 경우에 사용한다
- 조인 조건이 등호(=)인 경우에만 사용한다
- 하나의 테이블을 해시 테이블로 생성한 후에, 다른 테이블의 행을 해싱해서 비교하며 검색한다
- Index Join
- 조인되는 테이블 중 적어도 하나가 인덱스를 가지고 있을 때, 주로 FK와 PK 관계일 때 사용한다
- 인덱스가 있는 테이블에서 바로 특정 행을 찾을 수 있기 때문에 효율적이다