Database - hint
oracle hint
- SQL 튜닝의 핵심 부분으로 일종의 지시 구문이다.
- 직접 최적의 실행 경로를 작성해 주는 것.
- 무분별한 힌트사용은 성능저하를 초래한다.
- 힌트에 오타가 있는경우 무시된다.
OPTIMIZER_MODE
/*+ ALL_ROWS */
: Best Throughput- Cost-Based 접근방식으로 ALL_ROWS는 Full Table Scan을 선호하며 CBO(Cost Based Optimization)는 default로 ALL_ROWS를 선택
/*+ FIRST_ROWS */
: Best Response Time- 조건에 맞는 첫번째 row를 리턴하기 위한 resuorce 소비를 최소화 시키기 위한 힌트
/*+ CHOOSE */
- : Data Dictionary가 해당 테이블에 대해 통계정보를 가지고 있다면 Optimizer는 Cost-Based Approach를 선택하고, 그렇지 않다면 Rule-Based Approach를 선택
/*+ RULE */
- Rule Based 접근 방식을 사용하도록 지정
Access Methods
/*+ FULL(table_name) */
- full scan
/*+ HASH(table) */
- hash scan
/*+ CLUSTER(table_name) */
- cluster scan (Clustered Object만 적용)
/*+ HASH_AJ */
- NOT IN SubQuery를 HASH Anti-join으로 변형
/*+ HASH_SJ */
- Correlated Exists Subquery를 Hash Semi-join으로 변형
/*+ INDEX(table_name index_name) */
- 지정된 index를 강제적으로 쓰게끔 지정
/*+ INDEX_ASC(table_name index_name) */
- 지정된 index를 오름차순으로 쓰게끔 지정(default)
/*+ INDEX_DESC(table_name index_name) */
- : 지정된 index를 내림차순으로 쓰게끔 지정
references
댓글남기기