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.
WHERELas 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.