: 조인으로 연결되는 테이블 중 첫번째로 액세스 되는 테이블을 말한다.
https://velog.io/@kmdngmn/Oracle-SQL-Developer-Explain-Paln-%EC%8B%A4%ED%96%89-%EA%B3%84%ED%9A%8D
: 두개 이상의 테이블에서 하나의 테이블을 기준으로 순차적으로 상대방 테이블의 ROW를 결합하여 원하는 결과를 추출하는 테이블 조인 방식
Driving Table 드라이빙 테이블
또는 Outer 테이블
이라 한다.Driven Table 드리븐 테이블
또는 Inner 테이블
이라 한다./* NL 조인은 아래 JAVA 코드 원리와 같다.*/
for(int i = 1; i <= 100; i++) // outer loop
for(int j = 1; j <= 100; j++) // inner loop
...
NL 조인은 랜덤 엑세스에 의하여 접근하기 때문에 집합이 많다면 수행 속도가 저하된다.
따라서 레코드가 적은 테이블을 드라이빙 테이블
로 활용하거나 WHERE
조건절을 사용하여 적절히 결과 집합을 만들어야 한다.
연결이 되는 테이블인 driven 테이블
에는 조인을 위한 적절한 인덱스가 생성되어 있어야 한다.
인덱스가 없는 상태에서 NL조인이 수행된다면 수행 속도가 저하될 수 있어 이러한 경우 옵티마이저의 모드에 따라 Sort Merge Join
, Hash Join
을 수행하게 된다.
: 조인의 대상범위가 넓을 때 발생하는 Random Access를 줄이거나 마땅한 인덱스가 존재하지 않을 경우 해결하기 위한 조인 방식
: Sort-Merge Join
은 정렬 과정에서 부하가 발생할 수 있기에 Sort 대신 해쉬값을 사용하는 조인이다.
오라클 옵티마이저(Optimizer)에게 SQL문 실행을 위한 데이터를 스캐닝하는 경로, 조인하는 방법 등을 알려주기 위해 SQL사용자가 SQL 구문에 작성하는 것을 뜻함.
오라클이 항상 최적의 실행 경로를 만들어 내기는 불가능하기 때문에 직접 최적의 실행 경로를 작성해 주는 것
SELECT /*+ FIRST_ROWS */ [컬럼]
FROM [테이블]
WHERE [조건]
/*
바로 뒤에 +
가 붙는다는 점에서 주석과 다르다
참고