posted by 권오성의 Biomedical Engineering 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값이 된다.
첫번째 줄만 읽고 스캔을 멈추라는 의미다.