-- 일반적인 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 참조