Su consulta deberá contar los primeros 90M
registros para obtener los siguientes 100
, por lo que apenas hay margen de mejora.
No veo un ORDER BY
cláusula en su subconsulta, pero probablemente la tenga. En este caso, es posible que desee crear un índice sobre él.
Y una pregunta:¿sus usuarios realmente hacen clic en 900K
? páginas antes de quejarse del rendimiento?
Actualización:
Si necesita la última página, debe volver a escribir su ORDER BY
columna en orden descendente:
SELECT *
FROM (
SELECT rownum rnum, f.*
FROM findings f
ORDER BY
record_ordering_column DESC
)
WHERE rnum > 900
AND rownum <= 100
y crea un índice en record_ordering_column
Tenga en cuenta que mezclo rownum
de las consultas anidadas para mejorar el rendimiento.
Vea este artículo en mi blog para más detalles: