Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle e impaginazione

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: