En mi experiencia trabajando con bases de datos de alta demanda, estas dos técnicas simples me dieron resultados concretos. No importa si estás arrancando o si ya tenés experiencia: aplicar bien estos métodos puede marcar la diferencia entre una query lenta y una instantánea.
"No siempre se necesita magia para mejorar el rendimiento. A veces, alcanza con volver a lo básico."
Una práctica común es aplicar los filtros al final de la query, pero esto puede llevar a que la base de datos procese muchos más registros de los necesarios.
SELECT u.nombre, o.total
FROM usuarios u
JOIN ordenes o ON u.id = o.usuario_id
WHERE u.estado = 'activo' AND o.fecha >= '2024-01-01';
Acá se hace el JOIN
sobre toda la tabla de usuarios y ordenes antes de filtrar, lo cual puede generar un volumen de datos innecesario.
WITH usuarios_filtrados AS (
SELECT id, nombre
FROM usuarios
WHERE estado = 'activo'
),
ordenes_filtradas AS (
SELECT usuario_id, total
FROM ordenes
WHERE fecha >= '2024-01-01'
)
SELECT u.nombre, o.total
FROM usuarios_filtrados u
JOIN ordenes_filtradas o ON u.id = o.usuario_id;
Esto reduce significativamente la cantidad de registros en el JOIN
, lo que mejora el rendimiento y la claridad del plan de ejecución.
WHERE
Las funciones en columnas dentro del WHERE
pueden hacer que el motor de base de datos no use índices, forzando un full table scan.
SELECT *
FROM ventas
WHERE YEAR(fecha_venta) = 2025;
Esta consulta inutiliza cualquier índice sobre fecha_venta
.
SELECT *
FROM ventas
WHERE fecha_venta >= '2025-01-01' AND fecha_venta < '2026-01-01';
Con este cambio, se puede utilizar un índice sobre fecha_venta
, logrando mejoras significativas en el rendimiento.
Técnica | Dificultad de aplicar | Mejora esperada | Cuándo aplicarla |
---|---|---|---|
Filtros antes de JOIN | Muy baja | Alta | Siempre que trabajes con muchas relaciones |
Evitar funciones en WHERE |
Baja | Alta | En columnas con índices |
Estas dos prácticas son básicas, pero muchas veces ignoradas:
Me gusta usarlas porque son fáciles de implementar y ofrecen mejoras reales. No requieren cambiar estructuras, ni usar trucos avanzados, ni dependencias externas.
Si estás revisando el rendimiento de tus queries, arrancá por acá. A veces, lo simple también es poderoso 💪
¿Querés más ejemplos así? Te leo en los comentarios 👇
Me dedico a crear soluciones web eficientes y a compartir mi conocimiento con la comunidad de desarrolladores.