Всъщност нямам наличност на Oracle сега, но най-добрата SQL заявка за пейджинг е следната със сигурност
select *
from (
select rownum as rn, a.*
from (
select *
from my_table
order by ....a_unique_criteria...
) a
)
where rownum <= :size
and rn > (:page-1)*:size
http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
За постигане на последователно пейджиране трябва да подредите редове по уникален критерий , това ще избегне зареждането за страница X на ред, който вече сте заредили за страница Y ( !=X ).
РЕДАКТИРАНЕ:
1) Подреждане на редове с помощта на уникален критерий означава подреждане на данни по начин, при който всеки ред ще запази една и съща позиция при всяко изпълнение на заявката
2) Индекс с всички изрази, използвани в клаузата ORDER BY, ще помогне за по-бързо получаване на резултати, особено за първите страници. С този индекс планът за изпълнение, избран от оптимизатора, не трябва да сортира редовете, защото той ще върне редове, превъртащи индекса по естествения му ред.
3) Между другото, най-бързият начин за получаване на страница в резултат от заявка е да изпълните заявката само веднъж и да обработвате целия поток от страната на приложението.