sql >> Database teknologi >  >> RDS >> Oracle

Bedste praksis for paginering i Oracle?

Hvis du allerede bruger analytics (ROW_NUMBER() OVER ... ) og tilføjelse af en anden analytisk funktion på den samme partitionering vil tilføje en ubetydelig omkostning til forespørgslen.

På den anden side er der mange andre måder at lave paginering på, en af ​​dem ved hjælp af rownum :

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

Denne metode vil være overlegen, hvis du har et passende indeks på bestillingskolonnen. I dette tilfælde kan det være mere effektivt at bruge to forespørgsler (en for det samlede antal rækker, en for resultatet).

Begge metoder er passende, men generelt, hvis du ønsker både antallet af rækker og et pagineringssæt, er det mere effektivt at bruge analyser, fordi du kun forespørger på rækkerne én gang.



  1. SQLite Sum() vs Total():Hvad er forskellen?

  2. Tilføj uger til en dato i PostgreSQL

  3. MySQL-TABEL-erklæring

  4. Ugyldig identifikator SQL