MySQL - Cláusulas LIMIT y OFFSET
Las cláusulas LIMIT y OFFSET nos permiten controlar la cantidad de resultados que obtienes de una consulta, ideal para mejorar el rendimiento.
En MySQL, cuando trabajas con grandes cantidades de datos, puede que no siempre necesites obtener todos los registros de una tabla a la vez. Aquí es donde la cláusula LIMIT entra en juego, permitiendo restringir la cantidad de filas que devuelve una consulta, lo que resulta muy útil para mejorar el rendimiento de las consultas y facilitar la visualización de datos, especialmente cuando solo necesitas una muestra de los resultados.
LIMITyOFFSETson claves para implementar paginaciones en aplicaciones, permitiéndote dividir los resultados en páginas y mostrar solo una cantidad específica de registros por vez.
En este post, veremos cómo usar LIMIT para limitar los resultados de las consultas en MySQL, con ejemplos prácticos utilizando una base de datos de tienda y su tabla de productos.
¿Cómo funciona LIMIT?
La sintaxis de LIMIT es la siguiente:
1
2
3
SELECT columna1, columna2, ...
FROM tabla
LIMIT n;
n: El número de registros que deseas obtener.
Ejemplo básico:
Supongamos que tenemos una tabla llamada productos en la base de datos tienda con los siguientes datos:
id nombre precio cantidad 1 Laptop 499990 25 2 Mouse 19990 40 3 Teclado 29900 60 4 Monitor 120000 15 5 Tablet 109000 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14
CREATE TABLE productos ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255), precio INT, cantidad INT ); INSERT INTO productos (nombre, precio, cantidad) VALUES ('Laptop', 499990, 25), ('Mouse', 19990, 40), ('Teclado', 29900, 60), ('Monitor', 120000, 15), ('Tablet', 109000, 30);
Si quieres obtener solo los primeros 3 productos, puedes utilizar LIMIT de la siguiente forma:
1
2
SELECT * FROM productos
LIMIT 3;
id nombre precio cantidad 1 Laptop 499990 25 2 Mouse 19990 40 3 Teclado 29900 60 root@localhost [tienda]> SELECT * FROM productos LIMIT 3; +----+---------+--------+----------+ | id | nombre | precio | cantidad | +----+---------+--------+----------+ | 1 | Laptop | 499990 | 25 | | 2 | Mouse | 19990 | 40 | | 3 | Teclado | 29900 | 60 | +----+---------+--------+----------+ 3 rows in set (0.01 sec)
¿Cómo usar LIMIT con OFFSET?
Además de limitar el número de resultados, puedes usar OFFSET para omitir una cierta cantidad de registros antes de devolver los resultados.
La sintaxis con LIMIT y OFFSET es:
1
2
3
SELECT columna1, columna2, ...
FROM tabla
LIMIT n OFFSET m;
- n: El número de registros que deseas obtener.
- m: El número de registros a omitir.
Ejemplo con OFFSET:
Supongamos que deseamos omitir los primeros 2 productos y obtener los siguientes 3:
1
2
SELECT * FROM productos
LIMIT 3 OFFSET 2;
Resultado:
id nombre precio cantidad 3 Teclado 29900 60 4 Monitor 120000 15 5 Tablet 109000 30 root@localhost [tienda]> SELECT * FROM productos LIMIT 3 OFFSET 2; +----+---------+--------+----------+ | id | nombre | precio | cantidad | +----+---------+--------+----------+ | 3 | Teclado | 29900 | 60 | | 4 | Monitor | 120000 | 15 | | 5 | Tablet | 109000 | 30 | +----+---------+--------+----------+ 3 rows in set (0.01 sec)
En MySQL,
LIMIT 3 OFFSET 2yLIMIT 2, 3son equivalentes. La razón es que MySQL interpretaLIMIT inicio, cantidad, donde el primer número es el offset (desde dónde empezar) y el segundo cuántas filas devolver.
Aplicaciones comunes de LIMIT
Paginación de Resultados: Si estás mostrando resultados en una aplicación web, como productos en una tienda online, puedes utilizar
LIMITjunto conOFFSETpara paginar los resultados. De esta forma, solo se muestran un número limitado de productos por página.Ejemplo:
- Página 1 (registros 1 a 10):
1 2
SELECT * FROM productos LIMIT 10 OFFSET 0;
- Página 2 (registros 11 a 20):
1 2
SELECT * FROM productos LIMIT 10 OFFSET 10;
Mejorar el Rendimiento: Cuando trabajas con grandes bases de datos, las consultas sin
LIMITpueden tardar mucho. Si solo necesitas una pequeña muestra de resultados, usarLIMITpuede acelerar considerablemente la consulta.Consultas de Muestra: Si necesitas revisar o probar algo rápidamente en la base de datos, puedes usar
LIMITpara obtener solo un subconjunto de los registros.
Para profundizar y ver más ejemplos prácticos, puede consultar el siguiente video:
