2009. 5. 23. 15:05
오라클 힌트와 인덱스를 이용한 최대값 MAX 구하기 index_desc
우선 구하고자 하는 컬럼에 index를 걸어 놓는다
예) CREATE INDEX [index_name] ON [column_name];
SELECT /*+ index_desc(A [index_name]) */ [column_name]
FROM [table_name] A
WHERE [column_name] > 0 AND rownum=1;
설명
/*+ 부터 */ 까지는 힌트를 적용시키는 부분이다.
내용을 보면
index_desc는 인덱스를 DESC로 읽으라는 뜻
A는 테이블 앨리아스
WHERE절의 [column_name]>0 조건을 주는 이유는 해당 컬럼의 인덱스를 사용하기 위해서다
오라클에서는 저 부분이 없어도 인덱스를 사용한다고 하였지만
저 부분을 안 쓰고 실행계획으로 확인하면 인덱스를 사용하지 않을 때가 있다.
안전빵으로 써 놓는 게 좋다.
rownum=1 인덱스를 DESC로 하였기때문에 첫번째 줄이 자연스럽게 MAX값이 된다.
첫번째 줄만 읽고 스캔을 멈추라는 의미다.