부분범위 처리가 되도록 유도하는 페이지 처리는 적절한 ROWNUM 처리와 ORDER BY절, WHERE절, 인덱스 구성정보가 적절하고
테이블 간 조인 방식이 NESTED LOOPS JOIN으로 수행된다면 효율적인 수행이 가능
하지만 부분범위 처리가 불가능한 경우 적절하지 못한 ROWNUM처리를 하더라도, WHERE절, 인덱스 구성정보와 ORDER BY절의
정렬기준이 맞으면, SORT ORDER BY 오퍼레이션이 나타나지 않고, COUNT오퍼레이션이 보인다.
그런데 COUNT오퍼레이션이 마치 전체 데이터 처리를 하지 않고 수행하는것처럼 보이지만, 실제는 전체 데이터를 모두 처리한 후
ROWNUM을 수행하기 때문에 주의해야 한다.
...(생략)
WHERE a.acpt_no = b.acpt_no
AND a.acpt_no = c.acpt_no
AND b.styl_cd = 'ACOl'
AND a.proc_stus IN ('D','E')
AND a.brof_cd LlKE TRIM (:B0) || '%'
AND a.acpt_dt || a.acpt_time < :B1
ORDER BY a.brof_cd DESC, ---> 인텍스 컬럼 구성순서와 매징이 됨
a.proc_stus DESC,
a.acpt_dt DESC,
a.acpt_time DESC
) x
WHERE rnum <= :B2 AND rnum >= :B3 ---> ROWNUM 처리가 비효율
Rows Row Source Operation
-------------------------------------------------------------------
50 FILTER (cr=8677 pr=538 pw=O time=1957 us)
50 VIEW (cr=8677 pr=538 pw=0 time=1955 us cost=9 size=159 card=1)
599 COONT (cr=8677 pr=538 pw=0 time=326134B us) ---> 전체 데이터 처리함.
599 VIEW (cr=8677 pr=538 pw=0 time=3260896 us cost=9 size=146 card=1)
599 TABLE ACCESS BY INDEX ROWID TRM150 (cr=8677 pr=538 ... )
1199 NESTED LOOPS (cr=8078 pr=538 pw=O time=227759 us)
599 NESTED LOOPS (cr=6874 pr=530 pw=O time=4307258 us ... )
2057 TABLE ACCESS BY INDEX ROWID TRDIOO (cr=2147 pr=10 ... )
2057 INDEX RANGE SCAN DESCENDING IX TRD100 01 (cr=167 pr=O ... )
599 TABLE ACCESS BY INDEX ROWID TRM100 (cr=4727 pr=520 ... )
599 INDEX UNIQUE SCAN IX TRM100 02 (cr=4128 pr=7 pw=O time=56539 ...)