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

Velocidad de consultas paginadas en Oracle

El problema principal con el Caso 2 es que, en muchos casos, se debe obtener todo el conjunto de resultados de la consulta y luego ordenarse antes se pueden devolver las primeras N filas, a menos que las columnas ORDER BY estén indexadas y Oracle pueda usar el índice para evitar una ordenación. Para una consulta compleja y un gran conjunto de datos, esto puede llevar algún tiempo. Sin embargo, puede haber algunas cosas que puede hacer para mejorar la velocidad:

  1. Trate de asegurarse de que no se llame a ninguna función en el SQL interno; es posible que se llamen 5 millones de veces solo para devolver las primeras 20 filas. Si puede mover estas llamadas de función a la consulta externa, se llamarán menos.
  2. Use una sugerencia FIRST_ROWS_n para empujar a Oracle a optimizar por el hecho de que nunca devolverá todos los datos.

EDITAR:

Otro pensamiento:actualmente le está presentando al usuario un informe que podría devuelve miles o millones de filas, pero el usuario nunca va a recorrerlas todas de manera realista. ¿No puede obligarlos a seleccionar una cantidad menor de datos, p. limitando el intervalo de fechas seleccionado a 3 meses (o lo que sea)?