sql >> Database >  >> RDS >> Oracle

Oracle &Paginering

Uw zoekopdracht moet de eerste 90M aftellen records om de volgende 100 te krijgen , dus er is nauwelijks ruimte voor verbetering.

Ik zie geen ORDER BY clausule in je subquery, maar waarschijnlijk heb je het. In dit geval wilt u er misschien een index op maken.

En een vraag:klikken uw gebruikers echt door 900K pagina's voordat u klaagt over de prestaties?

Bijwerken:

Als je de laatste pagina nodig hebt, moet je je ORDER BY . herschrijven kolom in aflopende volgorde:

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

en maak een index op record_ordering_column

Merk op dat ik rownum mix mix 's van de geneste zoekopdrachten om de prestaties te verbeteren.

Zie dit artikel in mijn blog voor meer details:



  1. SQL Query-uitvoer in VBA is anders dan in SQL Oracle

  2. Django uniek samen beperking falen?

  3. Rijen ophalen uit meerdere tabellen met UNION ALL of één tabel in productie gebruiken?

  4. XML maken in PHP met SimpleXML met speciale tekens