Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

EXPLAIN

EXPLAIN es un comando SQL que muestra el plan de ejecución de una query, revelando cómo el motor de base de datos planea acceder a los datos —índices, scans, joins— para diagnosticar y optimizar el rendimiento.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • EXPLAIN as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

EXPLAIN —o EXPLAIN ANALYZE— es la herramienta de diagnóstico más importante para trabajar con bases de datos SQL. Le pedís a la base de datos que te muestre cómo va a ejecutar una query, sin ejecutarla realmente —plan estimado—, o ejecutándola y midiendo tiempos reales —ANALYZE—.

El output muestra: qué tablas se acceden, en qué orden, qué índices se usan —o no—, qué tipo de scan se aplica —Seq Scan, Index Scan, Bitmap Scan—, cuántas filas estima procesar y el costo relativo de cada paso.

Alcance y supuestos

Cubre el uso de EXPLAIN en PostgreSQL y MySQL, interpretación del plan y diagnóstico de problemas comunes. Asume familiaridad con SQL.

Modelo mental

El GPS de un auto antes de arrancar un viaje. Te muestra la ruta planeada: qué calles tomar, dónde hay peajes, cuánto se estima tardar. Si la ruta es ineficiente, cambiás algo —evitás una avenida congestionada—. EXPLAIN es el GPS de tu query.

Uso práctico

  • ✅ Diagnosticar queries lentas y verificar que los índices se estén usando.
  • ❌ Queries triviales que siempre son rápidas.

Ejemplo trabajado: lectura de un EXPLAIN en PostgreSQL

EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 42;
-- Seq Scan on orders (cost=0.00..2500.00 rows=50 width=100)
-- Filtro: customer_id = 42 → sin índice, full scan.

Con índice: Index Scan using idx_orders_customer on orders.

Evidencia

  • EXPLAIN está disponible en PostgreSQL, MySQL, SQLite y la mayoría de los motores SQL.

Fuentes citadas