Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

OFFSET PostgreSQL

La cláusula `OFFSET` de PostgreSQL se utiliza para omitir un número determinado de filas antes de empezar a devolver filas de una consulta. Esto es especialmente útil para implementar la paginación en los conjuntos de resultados.

Utilización

La cláusula `OFFSET` se suele utilizar junto con `LIMIT` para paginar los resultados de la consulta saltándose un número determinado de filas. Se coloca después de la cláusula "ORDENAR POR" para garantizar que las filas se omiten en un orden predecible.


SELECT column1, column2, ...
FROM table_name
[ORDER BY column]
OFFSET number_of_rows;

En esta sintaxis, `OFFSET número_de_filas` especifica cuántas filas deben omitirse al principio del conjunto de resultados.

Ejemplos

1. Desplazamiento básico


SELECT *
FROM employees
OFFSET 10;

Esta consulta omite las 10 primeras filas de la tabla "Empleados" y devuelve todas las filas siguientes.

2. Desplazamiento con límite


SELECT *
FROM products
ORDER BY product_id
OFFSET 5
LIMIT 10;

La consulta omite las 5 primeras filas y devuelve las 10 siguientes, proporcionando un conjunto de resultados paginados ordenados por "product_id".

3. Desplazamiento con consulta compleja


SELECT customer_id, order_date
FROM orders
WHERE order_status = 'completed'
ORDER BY order_date DESC
OFFSET 20
LIMIT 5;

Este ejemplo devuelve 5 filas después de omitir las 20 primeras filas de pedidos completados, ordenados por "fecha_pedido" en orden descendente.

Consejos y buenas prácticas

  • Combinar con `LIMIT`. Utiliza `OFFSET` con `LIMIT` para una paginación eficaz y para evitar la recuperación innecesaria de datos.
  • Garantizar la coherencia de los pedidos. Empareja siempre `OFFSET` con `ORDENAR POR` para garantizar resultados coherentes y predecibles.
  • Consideraciones sobre el rendimiento. Ten cuidado con los desplazamientos grandes, ya que pueden afectar al rendimiento, puesto que se siguen procesando todas las filas hasta el punto de desplazamiento. Considera técnicas de paginación alternativas si es necesario.
  • Indexación basada en cero. Recuerda que `OFFSET` tiene base cero, por lo que `OFFSET 0` devolverá todas las filas sin saltarse ninguna.
  • Métodos alternativos de paginación. Para grandes conjuntos de datos, considera la posibilidad de utilizar métodos alternativos, como cursores o paginación por conjuntos de claves, que pueden ser más eficientes al evitar el procesamiento de grandes desplazamientos.