Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Orakel &Paginierung

Ihre Abfrage muss die ersten 90M zählen Datensätze, um die nächsten 100 zu erhalten , also gibt es kaum Raum für Verbesserungen.

Ich sehe kein ORDER BY -Klausel in Ihrer Unterabfrage, aber wahrscheinlich haben Sie sie. In diesem Fall möchten Sie vielleicht einen Index darauf erstellen.

Und eine Frage:Klicken sich Ihre Benutzer wirklich durch 900K? Seiten, bevor Sie sich über die Leistung beschweren?

Aktualisierung:

Wenn Sie die neueste Seite benötigen, müssen Sie Ihren ORDER BY neu schreiben Spalte in absteigender Reihenfolge:

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

und erstellen Sie einen Index für record_ordering_column

Beachten Sie, dass ich rownum mische aus den verschachtelten Abfragen, um die Leistung zu verbessern.

Weitere Einzelheiten finden Sie in diesem Artikel in meinem Blog: