Ik heb nu eigenlijk geen beschikbaarheid van Oracle, maar de beste SQL-query voor paging is zeker de volgende
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
Voor een consistente paging u moet rijen bestellen met behulp van een uniek criterium , voorkomt u dat voor pagina X een rij wordt geladen die u al voor een pagina Y hebt geladen ( !=X ).
BEWERKEN:
1) Rijen ordenen met behulp van een uniek criterium betekent om gegevens zo te ordenen dat elke rij dezelfde positie behoudt bij elke uitvoering van de zoekopdracht
2) Een index met alle uitdrukkingen die in de ORDER BY-clausule worden gebruikt, zal helpen om sneller resultaten te krijgen, vooral voor de eerste pagina's. Met die index hoeft het uitvoeringsplan dat door de optimizer is gekozen de rijen niet te sorteren, omdat het rijen retourneert die door de index scrollen in zijn natuurlijke volgorde.
3) Trouwens, de snelste manier om resultaten van een zoekopdracht te bekijken, is door de zoekopdracht slechts één keer uit te voeren en alle stroom vanaf de toepassingszijde af te handelen.