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

Consulta de paginación más rápida de Oracle

En realidad, no tengo disponibilidad de Oracle ahora, pero la mejor consulta SQL para la paginación es la siguiente, seguro

select *
from (
        select rownum as rn, a.*
        from (
                select *
                from my_table
                order by ....a_unique_criteria...
            ) a
    )
where rownum <= :size
    and rn >  (:page-1)*:size

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

Para lograr una paginación consistente debe ordenar filas utilizando un criterio único , al hacerlo evitará cargar para la página X una fila que ya cargó para una página Y ( !=X ).

EDITAR:

1) Ordenar filas usando un criterio único significa ordenar datos de manera que cada fila mantenga la misma posición en cada ejecución de la consulta

2) Un índice con todas las expresiones utilizadas en la cláusula ORDER BY ayudará a obtener resultados más rápido, especialmente para las primeras páginas. Con ese índice, el plan de ejecución elegido por el optimizador no necesita ordenar las filas porque devolverá filas desplazando el índice por su orden natural.

3) Por cierto, la forma más rápida de obtener un resultado de página de una consulta es ejecutar la consulta solo una vez y manejar todo el flujo desde el lado de la aplicación.