by 실주 [SQL Query] ORDER BY [2012.03.17 00:24:27]
오라클에서 힌트 이용한 정렬 대신 ORDER BY 절로 정렬하는 경우 SQL은 어떻게 되는지 궁금합니다.
두개의 테이블 구성은 아래와 같습니다.
table1
column명 : colum1, colum2,colum3
table2
column명 : num1,num2,num3,num4,num5
다음과 같이 인덱스를 걸었습니다.
table1에도 걸었지만 여기서는 필요없는듯하여 생략..
table2 index_col
index column : num1 + num2
SQL 은 아래와 같습니다.====================
SELECT
AA.total ,
AA.colum1 ,
AA.num3 ,
CASE
WHEN colum3 = '01' THEN 'ABC'
ELSE ''
END colum3
FROM (SELECT ROWNUM AS ROWCNT ,
TMP.*
FROM (SELECT /*+ leading(A D) use_nl(D) */ COUNT(*) OVER() AS total ,
A.colum1 ,
D.num3
FROM table1 A ,
table2 D
WHERE 1 = 1
AND A.colum1 = D.num1
AND D.num2 = (SELECT /*+ INDEX_DESC(table2 index_col)*/ num2
FROM table2
WHERE num1 = A.colum1
AND num4 = '01'
AND num5 = 'Y'
AND ROWNUM = 1 )
AND A.colum3 = '01'
order by colum1 desc) TMP ) AA
WHERE 0 < ROWCNT
AND ROWCNT <= 10 ;
빨간색부분쪽에 신경을.... ^^
고수님들의 많은 답변 부탁드립니다.