La tua query dovrà contare i primi 90M
record per ottenere il prossimo 100
, quindi non c'è quasi margine di miglioramento.
Non vedo un ORDER BY
clausola nella tua sottoquery, ma probabilmente ce l'hai. In questo caso, potresti voler creare un indice su di esso.
E una domanda:i tuoi utenti fanno davvero clic su 900K
pagine prima di lamentarsi delle prestazioni?
Aggiornamento:
Se hai bisogno dell'ultima pagina, devi riscrivere il tuo ORDER BY
colonna in ordine decrescente:
SELECT *
FROM (
SELECT rownum rnum, f.*
FROM findings f
ORDER BY
record_ordering_column DESC
)
WHERE rnum > 900
AND rownum <= 100
e crea un indice su record_ordering_column
Nota che mescolo rownum
's dalle query nidificate per migliorare le prestazioni.
Vedi questo articolo nel mio blog per maggiori dettagli: