Jeg har faktisk ikke tilgængelighed af Oracle nu, men den bedste SQL-forespørgsel til personsøgning er helt sikkert følgende
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
For at opnå en ensartet personsøgning du bør bestille rækker ved hjælp af et unikt kriterium Hvis du gør det, undgår du at indlæse for side X en række, du allerede har indlæst for en side Y ( !=X ).
EDIT:
1) Bestil rækker ved hjælp af et unikt kriterium betyder at bestille data på den måde, at hver række vil beholde den samme position ved hver udførelse af forespørgslen
2) Et indeks med alle de udtryk, der bruges på ORDER BY-klausulen, vil hjælpe med at få resultater hurtigere, især for de første sider. Med det indeks behøver den udførelsesplan, der er valgt af optimeringsværktøjet, ikke at sortere rækkerne, fordi den vil returnere rækker, der ruller indekset efter dets naturlige rækkefølge.
3) I øvrigt er den hurtigste måde at sideresultater fra en forespørgsel på kun at udføre forespørgslen én gang og at håndtere hele flowet fra applikationssiden.