| 형태 | 설명 |
|---|---|
| INNER JOIN | 디폴트 |
| OUTER JOIN | LEFT, RIGHT, FULL |
| NATURAL JOIN | 두 테이블에서 같은 이름을 가진 모든 컬럼에 대한 equi 조인 |
| CROSS JOIN (=Cartesian Product) | 두 테이블 간 조인 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력 |
| USING 조건절 | USING (컬럼) |
| ON 조건절 |
※ OUTER JOIN의 위치에 따른 필터링
WHERE 절에 위치하는 경우
: OUTER JOIN으로 이미 조인된 결과에 대해 추가적인 필터링 수행
ON 절에 위치하는 경우
: 조인 데이터에 대해 필터링 수행
NATURAL JOIN
USING 조건절
USING 절은 조인에 사용될 컬럼을 지정 (조인 컬럼을 기술해야 함)공통점
차이점
FULL OUTER JOINUNIONINNER JOININTERSECT
| NL Join | Sort Merge Join | Hash Join | |
|---|---|---|---|
| 동작 방식 | 중첩된 반복문과 유사한 방식으로 조인 수행 for 선행테이블 읽음 for 후행테이블 읽음 | - 조인 컬럼 기준으로 데이터를 정렬하여 조인 - equi, non equi join 가능 | - 해쉬 함수 이용해 조인 - equi join만 가능 - CPU 작업 위주 처리 |
| 데이터 읽기 | 랜덤 액세스 | 스캔 방식(넓은 데이터 범위) | |
| 인덱스 | 사용 | 사용 X | 없어도 가능 |
| 사용 | 온라인 프로그램 | 데이터 집계 업무 | 대용량 데이터 집계 업무 |
HASH JOIN
NESTED LOOP JOIN(중첩 반복 조인)
5NESTED LOOPS 4 HASH JOIN 3 TABLE ACCESS (FULL) TAB1 3 TABLE ACCESS (FULL) TAB2 2 TABLE ACCESS (BY ROWID) TAB3 1 INDEX (UNIQUE SCAN) PK_TAB3
✔️ 해쉬 조인의 결과와 TAB3의 데이터를 중첩 루프를 통해 결합함
✔️ 각각의 해쉬 조인 결과 행에 대해 TAB3에서 매칭되는 행이 있는지 검사하고, 조건에 맞는 행들을 최종 결과 집합에 추가함
SEMI JOIN
ANTI JOIN