sql >> Databasteknik >  >> RDS >> Oracle

Oracle &paginering

Din fråga måste räknas bort de första 90M poster för att få nästa 100 , så det finns knappast utrymme för förbättringar.

Jag ser ingen ORDER BY klausul i din underfråga, men förmodligen har du det. I det här fallet kanske du vill skapa ett index på den.

Och en fråga:klickar dina användare verkligen igenom 900K sidor innan du klagar på prestanda?

Uppdatering:

Om du behöver den senaste sidan måste du skriva om din ORDER BY kolumn i fallande ordning:

SELECT  *
FROM    (
        SELECT  rownum rnum, f.*
        FROM    findings f
        ORDER BY
                record_ordering_column DESC
        ) 
WHERE   rnum > 900
        AND rownum <= 100

och skapa ett index på record_ordering_column

Observera att jag blandar rownum 's från de kapslade frågorna för att förbättra prestandan.

Se den här artikeln i min blogg för mer information:



  1. Vad är andra nivån SQL Injection

  2. Lägg till en kolumn i en tabell i SQL

  3. Hur man sorterar som hackernyheter

  4. Använder Oracle-databas för standardapplikationen ASP.NET MVC