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

¿Mejores prácticas para la paginación en Oracle?

Si ya está utilizando análisis (ROW_NUMBER() OVER ... ), luego agregar otra función analítica en la misma partición agregará un costo insignificante a la consulta.

Por otro lado, hay muchas otras formas de hacer la paginación, una de ellas usando rownum :

SELECT * 
  FROM (SELECT A.*, rownum rn
          FROM (SELECT *
                  FROM your_table
                 ORDER BY col) A
         WHERE rownum <= :Y)
 WHERE rn >= :X

Este método será superior si tiene un índice apropiado en la columna de pedido. En este caso, podría ser más eficaz utilizar dos consultas (una para el número total de filas y otra para el resultado).

Ambos métodos son apropiados pero, en general, si desea tanto el número de filas como un conjunto de paginación, usar análisis es más eficiente porque solo consulta las filas una vez.