INDEX_DESC 힌트 절

SQL/ORACLE 2014. 6. 11. 14:54
728x90
반응형

질문자님 의견에 대해 맨아래 의견에 내용추가 했습니다...^^;

====================================================================

 

일반적으로는 님의 추측대로 제시되는 게 맞습니다.

정확한 원인은 잘 모르겠지만 몇가지 확인, 수정하면 결과가 정확히 나올 것 같습니다.

 

1. 아무 조건이 없으므로 해당 인덱스 첫번째 컬럼이 YJ_NUM이어야 합니다.

2. 1번이 맞다면 YJ_NUM의 sort방식이 ASC인지 확인하세요.

   확인방법은 TOAD등의 Tool을 이용하여 인덱스를 확인하시고, Tool이 없는 경우는

   SELECT *
   FROM all_ind_columns
   WHERE index_name = 'BOARD2_PK_NUM'
으로 확인가능합니다.

   (DESCEND컬럼을 확인)

확인결과 YJ_NUM이 이미 DESC로 되어있다면 힌트에서 _DESC를 빼주셔야 합니다.

 

3. 최상위에 힌트를 써도 무방하나 정확한 처리를 위해 테이블을 access하는 지점에 힌트를 적용하고, 불필요한 인라인뷰를 제거하여 최적화된 SQL문 작성

SELECT  
 YJ_NUM  , YJ_NAME , YJ_TITLE, YJ_CONTENT, YJ_PASS, YJ_DATE, YJ_HIT , R
FROM(
    SELECT /*+ INDEX_DESC(board2 board2_pk_num)*/
          YJ_NUM  , YJ_NAME , YJ_TITLE, YJ_CONTENT, YJ_PASS, YJ_DATE, YJ_HIT

        , ROWNUM AS R
    FROM board2
     )
WHERE R >= ? AND R <= ?

 

건승하시길...수고하세요~~

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,