sql >> Databasteknik >  >> RDS >> Oracle

Bästa praxis för paginering i Oracle?

Om du redan använder analytics (ROW_NUMBER() OVER ... ) att sedan lägga till ytterligare en analytisk funktion på samma partitionering kommer att lägga till en försumbar kostnad för frågan.

Å andra sidan finns det många andra sätt att göra paginering, ett av dem med rownum :

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

Denna metod kommer att vara överlägsen om du har ett lämpligt index i beställningskolumnen. I det här fallet kan det vara mer effektivt att använda två frågor (en för det totala antalet rader, en för resultatet).

Båda metoderna är lämpliga, men i allmänhet är det mer effektivt att använda analys om du vill ha både antalet rader och en sidnumreringsuppsättning, eftersom du bara frågar raderna en gång.



  1. Nyckelvärdespar i PostgreSQL

  2. Hur man får lat och long från sdo_geometry i oracle

  3. MySQL användarrättigheter på delade servrar

  4. IRI-Windocks Test Database Repository