Your request will have to count the first 90M records to get the next 100 , so there is hardly a place for improvement.
I do not see the ORDER BY in your subquery, but you probably have one. In this case, you can create an index on it.
And the question is: do your users really click on 900K pages before complaining about performance?
Update:
If you need the last page, you need to rewrite the ORDER BY column in descending order:
SELECT * FROM ( SELECT rownum rnum, f.* FROM findings f ORDER BY record_ordering_column DESC ) WHERE rnum > 900 AND rownum <= 100
and create an index on record_ordering_column
Note that I mix rownum with nested queries to improve performance.
See this blog post for more details:
Quassnoi
source share