달력

42026  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

[Optimizer Hint] INDEX

Oracle 2008. 12. 10. 17:50

옵티마이저가 인덱스를 타지않고 풀스캔을 해서 강제로 특정 인덱스를 타게 만들어야 될 경우
HINT) INDEX([TABLE_NAME] [INDEX_NAME]) 를 사용하면 된다

SELECT            
       /*+ INDEX(TBBZS800 PK_TBBZS800) */
        A.USE_DT, B.TRANSP_OPER_ORG_ID, A.PCARD_USER_CLASS_CD
FROM TBBZS800
WHERE A.USE_DT BETWEEN &fromDt AND &toDt

위 처럼 SELECT 바로 뒤에 힌트를 사용하면 TBBZS800 테이블의 PK_TBBZS800 라는 인덱스를 통해서 쿼리가 수행된다

※ 주의점
FROM 절에서 해당 테이블의 알리아스가 있을경우 알리아스를 사용해야한다
알리아스가 다르거나 알리아스가 아닌 실테이블명을 명하시면 힌트는 무시된다

/*+ INDEX(TBBZS800 PK_TBBZS800) */
FROM TBBZS800
정상작동됨

/*+ INDEX(TBBZS800 PK_TBBZS800) */
FROM TBBZS800 A
힌트 무시됨

/*+ INDEX(B PK_TBBZS800) */
FROM TBBZS800 A
힌트 무시됨

/*+ INDEX(A PK_TBBZS800) */
FROM TBBZS800 A
힌트 무시됨

Posted by InuxKr
|