LIMIT y OFFSET
Obtenga las primeras N filas y pagine los resultados
LIMIT y OFFSET es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Obtener solo unas pocas filas
A veces no necesita todas las filas coincidentes, sino solo las primeras. LIMIT establece el número máximo de filas que devuelve la consulta.
Esto devuelve como máximo 5 productos.
SELECT name, price
FROM products
LIMIT 5;LIMIT sin ORDER BY es aleatorio
LIMIT por sí solo le proporciona algunas filas, pero no se define cuáles. Combínelo siempre con ORDER BY para que el resultado sea significativo y repetible.
-- The 5 newest orders, deterministically
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 5;Omitir filas con OFFSET
OFFSET indica a la base de datos que debe omitir un número determinado de filas antes de devolver resultados. Combinado con LIMIT, constituye la base de la paginación.
Esto omite las primeras 10 filas y devuelve las 5 siguientes.
SELECT name, price
FROM products
ORDER BY name
LIMIT 5 OFFSET 10;Crear páginas
Para un tamaño de página de 10, los números de página se corresponden con los desplazamientos de esta forma:
- Página 1:
OFFSET 0 - Página 2:
OFFSET 10 - Página 3:
OFFSET 20
La fórmula es OFFSET = (page - 1) * page_size.
-- Page 3 with 10 rows per page
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Orden de las operaciones
La base de datos aplica las cláusulas en este orden: filtra con WHERE, ordena con ORDER BY y después recorta con OFFSET y LIMIT.
Por tanto, siempre pagina sobre el resultado filtrado y ordenado.
SELECT name, price
FROM products
WHERE price > 0
ORDER BY price DESC
LIMIT 10 OFFSET 0;LIMIT ALL y OFFSET 0
LIMIT ALL significa «sin límite» (equivale a omitir LIMIT) y OFFSET 0 no omite ninguna fila. A veces resultan útiles cuando se construye un valor de forma dinámica.
SELECT name
FROM products
ORDER BY name
LIMIT ALL OFFSET 0;La sintaxis estándar de FETCH
PostgreSQL también admite la forma estándar de SQL: OFFSET n ROWS FETCH NEXT m ROWS ONLY. Hace exactamente lo mismo que LIMIT/OFFSET, solo que de forma más verbosa.
SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;Por qué los OFFSET grandes son lentos
Un OFFSET grande sigue obligando a la base de datos a recorrer y descartar todas las filas omitidas. OFFSET 100000 lee 100.000 filas solo para descartarlas, lo que se vuelve lento en páginas profundas.
-- Reads 100000 rows then discards them
SELECT id, name
FROM products
ORDER BY id
LIMIT 10 OFFSET 100000;Paginación por clave
Una alternativa más rápida es la paginación keyset (seek). En lugar de usar un desplazamiento, recuerde la última fila que vio y solicite las filas que aparecen después de ella.
Esto salta directamente a la página siguiente mediante un índice, sin omitir filas.
-- Next page after the last seen id (e.g. 5000)
SELECT id, name
FROM products
WHERE id > 5000
ORDER BY id
LIMIT 10;Las páginas estables necesitan un orden estable
Si su ORDER BY contiene empates, las filas pueden cambiar de posición entre cargas de página y es posible que vea duplicados o ausencias. Termine la ordenación con una clave única, como la clave principal, para que la paginación sea coherente.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 10 OFFSET 20;Una sola fila superior
LIMIT 1 es una forma rápida de obtener una sola fila, como el producto más caro o el pedido más reciente. Combínelo con el ORDER BY adecuado.
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 1;Comprobación rápida
Se muestran 10 filas por página. ¿Qué cláusula devuelve la página 3?
Resumen
Ahora puede delimitar sus resultados:
LIMIT nestablece un máximo de filasOFFSET momite filas;OFFSET = (page-1)*size- Combine siempre estas cláusulas con
ORDER BYpara obtener páginas predecibles - Para mejorar el rendimiento, prefiera la paginación por clave a los desplazamientos grandes
A continuación, utilizará estas herramientas para encontrar registros Top-N.
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Preguntas frecuentes
¿La lección «LIMIT y OFFSET» es gratis?
Sí — el texto completo de «LIMIT y OFFSET» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «LIMIT y OFFSET»?
Obtenga las primeras N filas y pagine los resultados Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «LIMIT y OFFSET»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ordenación con ORDER BY
- Ordenación por varias columnas
- LIMIT y OFFSET
- Cómo encontrar los registros superiores e inferiores