Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

Optimización de Consultas

La optimización de consultas busca minimizar el tiempo, la CPU y la E/S necesarios para ejecutar una query, mediante índices, reescritura de SQL, y análisis del plan de ejecución.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • Optimización de Consultas as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

Una query lenta no siempre es culpa de la base de datos. A veces es un índice faltante, un JOIN innecesario, o datos que podrían estar cacheados. La optimización de consultas es el proceso de identificar cuellos de botella y corregirlos.

El punto de partida es EXPLAIN: la base de datos te muestra cómo planea ejecutar la query —full scan vs index scan, orden de JOINs, uso de memoria—. Con esa información, las optimizaciones típicas incluyen crear índices, reescribir queries para que usen índices existentes, evitar SELECT *, y desnormalizar para queries de lectura pesada.

Alcance y supuestos

Cubre técnicas de optimización, uso de EXPLAIN, y el equilibrio entre velocidad de lectura y costo de escritura. Asume familiaridad con SQL.

Modelo mental

Un detective analizando la escena de un crimen. El detective tiene el reporte del oficial —el EXPLAIN— que dice «la víctima —el dato— fue encontrada acá, el sospechoso —el índice— pasó por allá». Con ese reporte, el detective determina dónde está el cuello de botella —falta un índice, sobra un JOIN— y lo resuelve.

Uso práctico

  • ✅ Queries que pasan de milisegundos a segundos con el crecimiento de datos.
  • ❌ Optimizar queries que se ejecutan una vez por día y tardan 100 ms.

Ejemplo trabajado: query lenta por falta de índice

SELECT * FROM orders WHERE customer_id = 42 tarda 2 segundos —full scan de 5M filas—. Se crea CREATE INDEX idx_orders_customer ON orders(customer_id). La query ahora tarda 3 ms.

Evidencia

  • Todo motor SQL tiene EXPLAIN. PostgreSQL tiene EXPLAIN ANALYZE que ejecuta la query y reporta tiempos reales.

Fuentes citadas