Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-16
제목 INDEX_DESC HINT



INDEX_DESC HINT 사용법
=======================

PURPOSE
---------
다음은 INDEX_DESC HINT를 사용하는 방법에 대하여 알아보기로 한다.


Explanation
-------------


- INDEX_DESC hint 사용법

select /*+ index_desc(table_alias_name index_name) */ *
from table_name table_alias_name
where key1 = :b1

(index_name index가 key1 column에 생성되어 있다)

윗 문장에 rownum=1 조건을 추가하면 key가 제일 큰 것 하나만
조회되므로, max function의 기능을 대신할 수 있다.

* SINGLE TABLE QUERY에서는 HINT 절에 table 명을 주는 것이
원칙이다.

* Hint 내의 table_name은 alias를 사용하였을 경우에는 반드시
table alias name으로 지정하여야 한다.

* 그 이유는 다음과 같이 SQL이 사용될 경우도 있기 때문니다.

(SELF-JOIN)

select /*+ index_desc(a a_pk) */
*
from t1 a, t1 b
where a.key1 = 'a'
and a.key1 = b.prev_c1(+)
and a.seq = b.pseq_no(+)
and rownum = 1

위와 같이 동일한 TABLE이 FROM 절 뒤에 복수로 나오는 경우
(Recursive 관계)가 있을 수 있는데 이 때 Hint 절의 table 명을
유일하게 줄 수가 없으므로 반드시 table alias name을 주어야
원하는 답이 나온다.


Reference Documents
--------------------
none
3826 보기 태그:
Comment
등록된 코멘트가 없습니다.