sql >> Base de Datos >  >> RDS >> Oracle

Oracle y Paginación

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: