sql >> Database >  >> RDS >> Oracle

Oracle snellere paging-query

Ik heb nu eigenlijk geen beschikbaarheid van Oracle, maar de beste SQL-query voor paging is zeker de volgende

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

Voor een consistente paging u moet rijen bestellen met behulp van een uniek criterium , voorkomt u dat voor pagina X een rij wordt geladen die u al voor een pagina Y hebt geladen ( !=X ).

BEWERKEN:

1) Rijen ordenen met behulp van een uniek criterium betekent om gegevens zo te ordenen dat elke rij dezelfde positie behoudt bij elke uitvoering van de zoekopdracht

2) Een index met alle uitdrukkingen die in de ORDER BY-clausule worden gebruikt, zal helpen om sneller resultaten te krijgen, vooral voor de eerste pagina's. Met die index hoeft het uitvoeringsplan dat door de optimizer is gekozen de rijen niet te sorteren, omdat het rijen retourneert die door de index scrollen in zijn natuurlijke volgorde.

3) Trouwens, de snelste manier om resultaten van een zoekopdracht te bekijken, is door de zoekopdracht slechts één keer uit te voeren en alle stroom vanaf de toepassingszijde af te handelen.



  1. Hoe u de ANSI_NULLS-instelling van uw sessie in SQL Server kunt controleren?

  2. Hoe records willekeurig uit de Oracle-database te halen?

  3. Wanneer de SQLiteOpenHelper onCreate methode wordt aangeroepen?

  4. MS Access corruptie deel 2:beste praktijken voor preventie en herstel