Als u al analyses gebruikt (ROW_NUMBER() OVER ...
) dan voegt het toevoegen van een andere analytische functie aan dezelfde partitie verwaarloosbare kosten toe aan de query.
Aan de andere kant zijn er veel andere manieren om paginering uit te voeren, waarvan één met rownum
:
SELECT *
FROM (SELECT A.*, rownum rn
FROM (SELECT *
FROM your_table
ORDER BY col) A
WHERE rownum <= :Y)
WHERE rn >= :X
Deze methode is superieur als u een geschikte index in de bestelkolom heeft. In dit geval kan het efficiënter zijn om twee zoekopdrachten te gebruiken (één voor het totale aantal rijen, één voor het resultaat).
Beide methoden zijn geschikt, maar in het algemeen als u zowel het aantal rijen als een pagineringsset wilt, is het gebruik van analyse efficiënter omdat u de rijen slechts één keer opvraagt.