PostgreSQL – Paginar Resultados (DataSets, ResultSets)

Paginar resultados en PostgreSQL es realmente una tarea muy sencilla pues de acuerdo a la documentación que puede consultarse en el siguiente enlace, PostgreSQL nos proporciona las sentencias LIMIT y OFFSET. Limit le dice a PostgreSQL cuántas filas debe devolver y Offset le dice cuantas filas omitirá antes de comenzar a devolver las filas resultantes. De acuerdo a ello es importante mencionar lo siguiente:

  • Siempre se debe usar Limit y Offset junto con la sentencia Order by para asegurar la consistencia en la navegación. Postgres claramente establece que de no hacerlo se pueden obtener resultados inconsistentes
  • Para devolver la primera fila el valor de OFFSET debe ser 0.

Y ahora veamos un ejemplo aprovechando la base de datos que hemos montado en el artículo Instalar base de datos de prueba booktown.  Vamos a obtener el total de filas de la tabla customers para validar la paginación:

SELECT *
  FROM booktown.public.customers
  order by id

todas-lasfilas

Como puede apreciarse en la imagen, tenemos treinta y un filas en la tabla de clientes. Ahora vamos a paginar la consulta en bloques de 5 registros. Eso nos dará los clientes 107, 112, 142, 146 y 172 en la primera página. La consulta para obtener el primer bloque de registros o página de 5 registros será:

SELECT *
  FROM booktown.public.customers
  order by id  
  limit 5 offset 0

que nos dará el siguiente resultado:

postgresql-paginar

es importante recordar que para obtener el primer bloque de registros el valor de offset debe ser 0 y el valor de limit el número de filas a devolver. Ahora vamos a obtener la segunda página. Partiremos del offset 5 que nos devolverá de acuerdo a la consulta global los clientes con Id igual a  185, 221, 270, 388, 409. Para ello ejecutaremos la siguiente consulta:

SELECT *
  FROM booktown.public.customers
  order by id  
  limit 5 offset 5

que nos devolverá lo siguiente:

paginar-postgresql

Como se puede ver en la consulta, lo único que cambiamos fue el offset al asignarle como valor 5, que son los registros que debe omitir antes de comenzar a retornar filas.  En una siguiente entrada crearemos un procedimiento almacenado para paginar.

 

 

1 Trackback / Pingback

  1. SQL Server – Paginar registros de un DataSet o RecordSet. | Blog del Poli

Deja un comentario