Puedes ejecutar cualquier EXPLAIN en nuestra consola interactiva: Abrir consola SQL →
EXPLAIN Plan: cómo SQL ejecuta tus consultas
EXPLAIN muestra el plan de ejecución de una consulta: qué índices usa, qué tablas escanea, qué operaciones realiza y cuánto costará. Es la herramienta clave para optimizar rendimiento en bases de datos reales.
Tabla de contenidos
1. ¿Qué es EXPLAIN?
EXPLAIN muestra cómo la base de datos planea ejecutar una consulta.
EXPLAIN SELECT * FROM productos WHERE precio > 50;
2. Sintaxis
EXPLAIN SELECT ...
EXPLAIN ANALYZE SELECT ...
3. Tipos de operaciones
- Seq Scan — escaneo completo de tabla.
- Index Scan — uso de índice.
- Bitmap Index Scan — índice + bitmap.
- Nested Loop — JOIN fila por fila.
- Hash Join — JOIN usando hash.
- Merge Join — JOIN ordenado.
4. Detección de uso de índices
EXPLAIN SELECT * FROM usuarios WHERE email = 'ana@example.com';
Si aparece Index Scan, el índice está funcionando. Si aparece Seq Scan, no se está usando.
5. Planes de JOIN
EXPLAIN SELECT u.nombre, p.producto
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id;
Los JOIN pueden usar Nested Loop, Hash Join o Merge Join según índices y tamaño.
6. Coste estimado
EXPLAIN SELECT * FROM ventas WHERE fecha > '2024-01-01';
El plan incluye un coste estimado: cuanto mayor sea, más lenta será la consulta.
7. EXPLAIN ANALYZE
EXPLAIN ANALYZE SELECT * FROM productos WHERE precio > 50;
Ejecuta la consulta y muestra tiempos reales. Es la herramienta definitiva para optimizar.
8. Ejemplos prácticos
-- Ver si se usa índice
EXPLAIN SELECT * FROM usuarios WHERE email = 'ana@example.com';
-- JOIN optimizado
EXPLAIN SELECT c.nombre, p.producto
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id;
-- Detección de Seq Scan
EXPLAIN SELECT * FROM productos WHERE LOWER(nombre) = 'monitor';
9. Ejercicios para practicar
- Detecta si una consulta usa índice.
- Analiza un JOIN con EXPLAIN.
- Identifica un Seq Scan.
- Usa EXPLAIN ANALYZE para medir tiempos.
- Explica por qué EXPLAIN es esencial.
EXPLAIN SELECT * FROM usuarios WHERE email = 'ana@example.com';
EXPLAIN SELECT u.nombre, p.producto
FROM usuarios u JOIN pedidos p ON u.id = p.usuario_id;
EXPLAIN SELECT * FROM productos WHERE LOWER(nombre) = 'monitor';
EXPLAIN ANALYZE SELECT * FROM ventas WHERE fecha > '2024-01-01';
-- EXPLAIN permite ver cómo SQL ejecuta realmente la consulta.
10. Mini‑proyecto: Optimización con EXPLAIN ANALYZE
CREATE INDEX idx_ventas_cliente ON ventas(cliente_id);
EXPLAIN ANALYZE
SELECT c.nombre, SUM(v.cantidad)
FROM ventas v
JOIN clientes c ON c.id = v.cliente_id
GROUP BY c.nombre
ORDER BY SUM(v.cantidad) DESC;
11. Errores comunes
- No interpretar Seq Scan como problema.
- Ignorar el coste estimado.
- No usar EXPLAIN ANALYZE.
- Crear índices sin verificar uso real.
12. Preguntas frecuentes
¿EXPLAIN ejecuta la consulta?
No, EXPLAIN ANALYZE sí.
¿Es obligatorio usar índices?
Solo si mejoran el plan de ejecución.