select *
from (
select /*+ */ rownum no, a.*
from
(
-- SQL Body 시작
select owner, object_name
from big_table
where owner = 'SYS'
and created > TO_DATE('20170126135300','YYYYMMDDHH24MISS')
order by created
-- SQL Body 끝
) a
where rownum <= (:page * 10)
)
where no >= (:page - 1) * 10 + 1;
위 SQL로 p.384하단의 실행계획과 동일한 결과를 볼 수 있었습니다.
하지만, trace를 살펴보면 아래와 같습니다.
-------------------------------------------------------------
recursive calls 0
db block gets 0
consistent gets 251229
physical reads 251221
redo size 0
bytes sent via SQL*Net to client 967
bytes received via SQL*Net from client 1307
SQL*Net roundtrips to/from client 3
sorts (memory) 1
sorts (disk) 0
rows processed 0
-------------------------------------------------------------
p.385하단의 실습결과와 달리 physical reads 251221 블록을 읽었고
여러번 쿼리를 실행해도 버퍼캐시에 의해 감소하지 않습니다.
이런한 현상이 일어나는 이유가 궁금합니다.