ALL_ROWS
SELECT /*+ALL_ROWS */
COL1
, COL2
FROM TABLE
WHERE COL = '';
전체 RESOURCE 최소화 시키기 위한 힌트이다.
비용기반 (Cost-Based 접근)
FIRST_ROWS
SELECT /*+FIRST_ROWS */
COL1
, COL2
FROM TABLE
WHERE COL1 = ''
조건에 맞는 첫번째 row를 반환 Resource 소비 최소화 힌트이다.
비용기반 (Cost-Based 접근)
CHOOSE
SELECT /*+CHOOSE */
COL1
, COL2
FROM TABLE
WHERE COL1 = '';
acess되는 테이블에 통계치 존재 여부에 따라 Optimizer로
Rule-Based Approach와 Cost-Based Approach 중 하나를 선택할 수 있게 한다.
RULE
SELECT /*+RULE */
COL1
, COL2
FROM TABLE
WHERE COL1 = '';
규칙기반 (Rule-Based) 최적화
FULL
SELECT /*+FULL(TABLE) */
COL1
, COL2
FROM TABLE
WHERE COL1 = '';
해당 테이블의 Full Table Scan
ROWID
/*+ ROWID(TABLE) */
지정된 테이블의 ROWID를 이용한 Scan(가장 빠른 Access 방식)
CLUSTER
SELECT /*+CLUSTER(TABLE T1) */
T1.COL1
, T1.COL2
FROM TABLE T1, TABLE T2
WHERE T1.COL1 = ''
AND T1.COL2 = T2.COL2;
지정된 테이블Access에 Cluster Scan 유도. Cluster된 Objects에만 적용 가능하다.
HASH
/*+HASH(TABLE) */
지정된 테이블Access에 HASH Scan 유도한다.
HASH_AJ
/*+HASH_AJ */
Not in SubQuery 를 HASH Anti-join으로 변형
HASH_SJ
/*+HASH_SJ */
Correlated Exists Subquery 를 Hash Semi-join으로 변형
INDEX
/*+INDEX(TABLE COL1_INDEX) */
지정된 테이블access에 Index Scan 유도, 하나의 Index만 지정되면 Optimizer는 해당index를 이용
여러개의 인덱스가 지정되면 Optimizer가 각 Index의 Scan시 Cost를 분석 한 후 최소비용이 드는 Index사용
경우에 따라 여러 Index 사용 후 결과를 Merge하는 Acees방식도 채택
Index가 지정되지 않으면 Optimizer는 테이블의 이용가능한 모든 Index에 대해 Scan Cost를 고려 후 최저비용이 드는 Index Scan을 진행한다.
INDEX_FFS
/*+INDEX_FFS(TABLE INDEX) */
Full Scan보다 빠른 Full Index Scan을 유도한다.
ORDERED
/*+ORDERED */
FROM절에 기술된 테이블 순서대로 JOIN이 되도록 유도한다.
