-- 일반적인 INDEX_DESC를 이용한 역순 한건 취하기 쿼리
--------------------------------------------------------------------
SELECT  /*+ INDEX_DESC(ORDER PK_ORDER) */
,       NVL(MAX(SEQ), 0) + 1
FROM ORDER
WHERE DEPT_NO = '1234'
AND ROWNUM = 1;



-- INDEX가 없어져도 값이 틀리지 않도록 한번더 조치
-- 인덱스가 존재할때는 ORDER BY 구문과 INDEX 정렬규칙이 일치하므로
-- SORT 연산이 발생하지 않으므로 일의 낭비는 없다.
--------------------------------------------------------------------
SELECT  T.*
FROM   (SELECT  /*+ INDEX_DESC(ORDER PK_ORDER) */
        ,       NVL(MAX(SEQ), 0) + 1
        FROM ORDER
        WHERE DEPT_NO = '1234'
        ORDER BY SEQ DESC) T
WHERE ROWNUM = 1;



* 새로쓴 대용량 데이터베이스 솔루션 437P 참조