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

댓글남기기