INDEX | 인덱스를 순차적으로 스캔 |
INDEX_ASC | 인덱스를 내림차순으로 스캔 |
INDEX_DESC | 인덱스를 오름차순으로 스캔 |
INDEX_FFS | INDEX FAST FULL SCAN |
PARALLEL_INDEX | INDEX PARALLEL SCAN |
NOPARALLEL_INDEX | INDEX PARALLEL SCAN 제한 |
ADD_EQUALS | 여러개의 INDEX MERGE 수행 |
FULL | FULL 스캔 |
USE_NL | NESTED LOOP JOIN 사용 A 테이블의 ROW 인덱싱 후 그 값에 해당하는 B 테이블의 ROW 스캔 테이블 인덱스끼리 inner-outer Loop를 형성하여 Query 데이터가 많을 수록 Loop 방식은 부담 Driving : 찾는 주체, Driven : 비교 대상 |
USE_NL_WTH_INDEX | INDEX를 사용하여 NESTED LOOP JOIN 사용 |
NL_AJ | NESTED LOOP ANTI JOIN 사용 |
NL_SJ | NESTED LOOP SEMI JOIN 사용 |
USE_MERGE | SORT MERGE HOIN 사용 각 테이블을 스캔하여 SORT한 후 서로 MERGE하면서 JOIN 쿼리량이 많은 경우 각각 스캔한 후 같은 키를 갖는 데이터끼리 JOIN 많은 메모리와 디스크 I/O 필요 항상 전체범위처리 수행 대등한 관계이기 때문에 Driving, Driven 구별 없음 |
MERGE_AJ | SORT MERGE ANTI JOIN 사용 |
MERGE_SJ | SORT MERGE SEMI JOIN 사용 |
USE_HASH | HASH JOIN 사용 한 테이블은 데이터가 많고 한 테이블은 데이터가 적을 때 해시 알고리즘에 의해 큰 테이블을 여러 개로 나누어 Query 작은 테이블은 인덱스를 타지 않고 Full Scan이 유리할 때 |
HASH_AJ | HASH ANTIJOIN 사용 |
HASH_SJ | HASH SEMIJOIN 사용 |
ORDERED | FROM절 테이블 순서대로 Driving 만약 ORDERED 다음에 USE_NL이 나오면 ORDERED 적용되어 FROM절 순서 적용 만약 여러 인라인뷰가 있을 때 깊은 인라인뷰부터 Driving하고자 할 때도 사용 |
LEADING | Parameter에 명시된 테이블 순서대로 Driving |
DRIVING | 해당 테이블을 먼저 DRIVING |
APPEND | INSERT시 Direct Loading |
PARALLEL | SELECT, INSERT 시 여러 프로세스로 수행 |
CACHE | 데이터를 메모리에 캐싱 |
NOCACHE | 데이터를 메모리에 캐시하지 않음 |
PUSH_SUBQ | Sub Query 먼저 수행 |
REWRITE | Query Rewrite 수행 |
NOREWRITE | Query Rewrite 수행하지 않음 |
USE_CONCAT | IN절을 Concatenation Access Operation으로 수행 즉 OR 혹은 IN 조건을 별도로 분리하여 각각 실행한 후 이를 연결하는 실행계획 |
USE_EXPAND | IN절을 Concatenation Access Operation으로 수행하지 않음 |
MERGE | View Merging 수행 |
NO_MERGE | View Merging 수행하지 않음 |
오라클 힌트 종류에 대하여
- Tech Note 정보
- 열린기술자 님이 작성하신 글입니다.
- 카테고리: [ Oracle Database ]
- 조회수: 3655