IOKELU
Nivel: Avanzado
💡 Analiza tus consultas:
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.

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

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

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

12. Preguntas frecuentes

¿EXPLAIN ejecuta la consulta?

No, EXPLAIN ANALYZE sí.

¿Es obligatorio usar índices?

Solo si mejoran el plan de ejecución.


Siguiente guía

SQL Avanzado – Joins complejos →