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 :