Twoje zapytanie będzie musiało odliczyć pierwsze 90M rekordy, aby uzyskać następne 100 , więc nie ma miejsca na poprawę.
Nie widzę ORDER BY klauzula w podzapytaniu, ale prawdopodobnie ją masz. W takim przypadku możesz utworzyć na nim indeks.
I pytanie:czy Twoi użytkownicy naprawdę klikają 900K strony przed złożeniem skargi na wydajność?
Aktualizacja:
Jeśli potrzebujesz najnowszej strony, musisz przepisać swoje ORDER BY kolumna w kolejności malejącej:
SELECT *
FROM (
SELECT rownum rnum, f.*
FROM findings f
ORDER BY
record_ordering_column DESC
)
WHERE rnum > 900
AND rownum <= 100
i utwórz indeks w record_ordering_column
Zauważ, że mieszam rownum z zagnieżdżonych zapytań w celu poprawy wydajności.
Zobacz ten artykuł na moim blogu, aby uzyskać więcej informacji: