목차

I. Index
II. QB_NAME
III. FIRST_ROWS(K)
IV. Full Hint Naming Convention
V.Oracle은 Hint를 무시하지 않는다

Forgotten Hints

Index

실제 정의된 인덱스 컬럼을 사용하여 가독성 향상

index의 변화

  • Syntax
    기본적인 사용법
    /*+ index(table_name index_name */
    추가된 사용법
    /*+index(table_name table_name(column) */
    /*+ index(table_name) */
    INDEX TEST

Index_RS의 추가

  • Index Full Scan의 비효율적인 실행계획을 세울 때 Index Range Scan으로 유도할 수 있다.

QB_NAME

  • 10g에서 추가
  • 복잡한 쿼리의 가독성을 높이고 제어를 쉽게 해준다.

View밖에서 뷰안의 쿼리를 제어하기 위한 방법

CBQT에 의해 쿼리블럭이 사라지는 경우는 어떻게 처리하나?
Query Block Name에는 보이지 않아도 Object Alias에는 표시되니 문제없다
QB_NAME확인

FIRST_ROWS(K)

  • First_Row는 항상 Rule Base로 동작하며 oracle9i는 Deprecated되었다.
  • Oracle 10g R1까지는 100% cost base였다
  • Oracle 10g R2부터는 Rule Base logic이 포함되어 Cost가 높더라도 Index를 선호하는 방식으로 동작한다.

오라클의 업그래이드나 패치 시 고민할 부분이 하나 더 추가된 것이다.

Full Hint Naming Convention

  • 공식적인 명칭은 아니며 global hint의 범주에 포함된다.
  • 확인방법 : dbms_xplan.display format'OUTLINE'으로 확인
    Full Hint Naming Convention

Oracle은 Hint를 무시하지 않는다

  • 힌트를 사용할 수 없는 환경이었거나
    ?-- index fast full scan test
  • Oracle의 구현 상의 한계에 의해
    ?-- sub query unnesting 시 ORDERED HINT
    ?-- non unique index의 direct insert