sql >> Database >  >> RDS >> Oracle

Snelheid van paginaquery's in Oracle

Het grootste probleem met Case 2 is dat in veel gevallen de hele set queryresultaten moet worden verkregen en vervolgens voor moet worden gesorteerd. de eerste N rijen kunnen worden geretourneerd - tenzij de ORDER BY-kolommen zijn geïndexeerd en Oracle de index kan gebruiken om een ​​sortering te voorkomen. Voor een complexe query en een grote set gegevens kan dit enige tijd duren. Er kunnen echter enkele dingen zijn die u kunt doen om de snelheid te verbeteren:

  1. Probeer ervoor te zorgen dat er geen functies worden aangeroepen in de interne SQL - deze kunnen 5 miljoen keer worden aangeroepen om de eerste 20 rijen terug te geven. Als je deze functie-aanroepen naar de buitenste query kunt verplaatsen, worden ze minder aangeroepen.
  2. Gebruik een FIRST_ROWS_n hint om Oracle aan te sporen om te optimaliseren voor het feit dat u nooit alle gegevens zult retourneren.

BEWERKEN:

Een andere gedachte:u presenteert de gebruiker momenteel een rapport dat zou duizenden of miljoenen rijen retourneren, maar de gebruiker zal ze nooit allemaal doorbladeren. Kun je ze niet dwingen om een ​​kleinere hoeveelheid gegevens te selecteren, b.v. door het geselecteerde datumbereik te beperken tot 3 maanden (of wat dan ook)?



  1. Dynamisch instellen van __tablename__ voor sharding in SQLAlchemy?

  2. Laravel Welsprekende vergelijkingsdatum uit datetime-veld

  3. PHP mysql-rijen bestellen

  4. Geneste Invoegen in en selecteer statement