3 visitas

🧠 Dos técnicas simples (y potentes) para optimizar tus consultas SQL

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


🛠️ Técnica 1: Agregá filtros ANTES de hacer JOINs

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.

❌ Mal ejemplo: Filtro después del JOIN

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.

✅ Buen ejemplo: Filtros antes del JOIN (usando CTEs o subqueries)

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.


🛠️ Técnica 2: Cuidado con las funciones en el 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.

❌ Mal ejemplo: Función sobre la columna

SELECT *
FROM ventas
WHERE YEAR(fecha_venta) = 2025;

Esta consulta inutiliza cualquier índice sobre fecha_venta.

✅ Buen ejemplo: Reescribir la condición

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.


📊 Comparativa de impacto estimado

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

🧩 Conclusiones

Estas dos prácticas son básicas, pero muchas veces ignoradas:

  1. Filtrar antes de hacer JOINs evita que el motor trabaje de más.
  2. Evitar funciones en el WHERE permite aprovechar los índices.

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 👇

🧠 Dos técnicas simples (y potentes) para optimizar tus consultas SQL
03 August 2025

Me dedico a crear soluciones web eficientes y a compartir mi conocimiento con la comunidad de desarrolladores.

Alejandro Leone
Backend Developer