NL JOIN
- 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행
- 랜덤 엑세스 방식으로 데이터를 읽음
- 대량의 데이터 처리 시 적합하지 않다
- Driving Table로는 데이터가 적거나 where절 조건으로 row의 숫자를 줄일 수 있는 테이블이어야 한다
- Driven Table에는 조인을 위한 적절한 인덱스가 생성되어 있어야 한다.
SORT MERGE JOIN
- 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행
- 주로 FULL TABLE 스캔 방식으로 데이터를 읽음
- 랜덤 액세스로 NL Join에서 부담이 되던 넓은 범위의 데이터를 처리할 때 이용되던 조인 기법
- 조인 컬럼의 인덱스가 없어도 조인 작업이 가능하다는 장점
- 모든 정렬 작업을 수행하기에 메모리가 부족한 경우 성능이 떨어질 수 있다
- 동등 조인 뿐만 아니라 비동등 조인에 대해서도 조인 작업이 가능하다
HASH JOIN
- 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법
- 해쉬 함수 적용 시 동일한 값은 항상 같은 값으로 해싱됨
- 생성된 해쉬 테이블의 크기가 메모리에 적재할 수 있는 크기보다 더 커지면 임시 영역(디스크)에 해쉬 테이블을 저장
- 동등 조인에서만 사용이 가능하다
- NL JOIN의 랜덤 엑세스와 SORT MERGE JOIN의 정렬 작업의 부담을 위한 대안이다
- 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다
- 드라이빙 조건과 상관없이 좋은 성능을 발휘할 수 있는 조인 방법이다
- 유용한 인덱스가 부족하여 중첩루프 조인이 비효율적 일 때 효과적이다
Dring Table이란
조인을 할때 먼저 액세스 되는 테이블을 Driving Table이라고 하며 나중에 액세스 되는 테이블을 Driven Table이라고 한다.