Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Best Practice für Paginierung in Oracle?

Wenn Sie Analytics bereits verwenden (ROW_NUMBER() OVER ... ) und dann das Hinzufügen einer weiteren Analysefunktion bei derselben Partitionierung der Abfrage nur geringfügige Kosten hinzufügen.

Auf der anderen Seite gibt es viele andere Möglichkeiten zur Paginierung, eine davon mit rownum :

SELECT * 
  FROM (SELECT A.*, rownum rn
          FROM (SELECT *
                  FROM your_table
                 ORDER BY col) A
         WHERE rownum <= :Y)
 WHERE rn >= :X

Diese Methode ist überlegen, wenn Sie einen geeigneten Index für die Sortierspalte haben. In diesem Fall ist es möglicherweise effizienter, zwei Abfragen zu verwenden (eine für die Gesamtzahl der Zeilen, eine für das Ergebnis).

Beide Methoden sind geeignet, aber im Allgemeinen ist die Verwendung von Analytics effizienter, wenn Sie sowohl die Anzahl der Zeilen als auch einen Paginierungssatz benötigen, da Sie die Zeilen nur einmal abfragen.