Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle et Pagination

Votre requête devra compter les premiers 90M enregistrements pour obtenir les 100 suivants , il n'y a donc guère de place à l'amélioration.

Je ne vois pas de ORDER BY clause dans votre sous-requête, mais vous l'avez probablement. Dans ce cas, vous pouvez créer un index dessus.

Et une question :vos utilisateurs cliquent-ils vraiment sur 900K ? pages avant de se plaindre des performances ?

Mise à jour :

Si vous avez besoin de la dernière page, vous devez réécrire votre ORDER BY colonne par ordre décroissant :

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

et créer un index sur record_ordering_column

Notez que je mélange rownum à partir des requêtes imbriquées pour améliorer les performances.

Voir cet article sur mon blog pour plus de détails :