Consultas · guía rápida

EXPLAIN

Muestra el plan que el motor piensa utilizar para resolver una consulta. Sirve para investigar rendimiento antes de cambiar índices o reescribir SQL.

Lectura: 8–10 minEjemplo paso a pasoPráctica con pistas
Contenido de esta guía

Qué significa

EXPLAIN pide al motor que describa el plan preparado para una sentencia. Ese plan indica, entre otras cosas, cómo espera leer las tablas, qué índices puede utilizar y en qué orden combinará las operaciones.

No responde si una consulta es “buena” o “mala” con una sola cifra. Es una herramienta de diagnóstico: ayuda a formular preguntas concretas sobre el trabajo que realizará la base de datos.

Cuándo conviene utilizarlo

Úsalo cuando una consulta tarda más de lo esperado, cuando quieres comprobar si un índice participa o cuando una modificación de SQL cambia mucho el comportamiento. Primero confirma que la consulta devuelve los datos correctos; después investiga el plan.

Orden recomendado: mide el problema, observa el plan, formula una hipótesis, cambia una sola cosa y vuelve a medir. No crees índices únicamente porque aparezca una lectura completa.

Sintaxis básica

PostgreSQL
EXPLAIN
SELECT columnas
FROM tabla
WHERE condicion;
SQLite
EXPLAIN QUERY PLAN
SELECT columnas
FROM tabla
WHERE condicion;

El nombre y el formato varían entre motores. PostgreSQL ofrece opciones como ANALYZE, que ejecuta la sentencia y añade mediciones reales. SQLite separa EXPLAIN, de bajo nivel, y EXPLAIN QUERY PLAN, que ofrece una descripción de más alto nivel.

Ejemplo guiado

Queremos listar los productos con stock disponible, del mayor al menor stock:

Consulta que queremos estudiar
SELECT id, nombre, stock
FROM productos
WHERE stock > 0
ORDER BY stock DESC;
Resultado de la consulta
idnombrestock
9Cable USB-C30
1Ratón18
5Auriculares11
8Disco SSD9
2Teclado7
3Monitor 244
7Monitor 272

En SQLite podemos anteponer EXPLAIN QUERY PLAN:

Diagnóstico en SQLite
EXPLAIN QUERY PLAN
SELECT id, nombre, stock
FROM productos
WHERE stock > 0
ORDER BY stock DESC;
Plan obtenido con la base educativa
detalle
SCAN productos
USE TEMP B-TREE FOR ORDER BY

Cómo leerlo sin memorizar códigos

  1. SCAN productos indica que SQLite recorre la tabla para evaluar el filtro.
  2. La segunda línea indica que necesita una estructura temporal para ordenar.
  3. Eso no demuestra por sí solo que haya un problema: la tabla educativa tiene muy pocas filas.
  4. En una base real habría que medir con datos representativos antes de crear un índice.

EXPLAIN y EXPLAIN ANALYZE no son lo mismo

Un plan estimado describe la estrategia prevista. En PostgreSQL, EXPLAIN ANALYZE ejecuta la sentencia y muestra tiempos y filas observadas. Esa diferencia es importante: una estimación puede desviarse de la realidad.

Ejecutar ANALYZE sobre una escritura sin cuidado

Operación que requiere precaución
EXPLAIN ANALYZE
DELETE FROM pedidos
WHERE estado = 'cancelado';

En PostgreSQL, EXPLAIN ANALYZE ejecuta la sentencia. Con INSERT, UPDATE o DELETE puede modificar datos. Utiliza una transacción que puedas revertir o trabaja en un entorno seguro.

Comprueba lo aprendido

Intermedia · comparación controlada

Compara el plan antes y después de un índice

En una copia de práctica, observa el plan de los pedidos del cliente 1, crea un índice compuesto y vuelve a observarlo. No concluyas que el índice mejora producción: aquí solo comprobarás que el plan puede cambiar.

Diferencias entre motores

Los planes, nombres de operaciones y costes no son comparables directamente entre PostgreSQL, SQLite, MySQL, SQL Server u Oracle. Incluso el formato puede cambiar entre versiones. Aprende a reconocer ideas —lectura de tabla, acceso por índice, ordenación y unión— y consulta la documentación del motor concreto.

Qué debes recordar

  • EXPLAIN describe una estrategia, no entrega una recomendación automática.
  • Un recorrido completo puede ser correcto para una tabla pequeña.
  • EXPLAIN ANALYZE puede ejecutar la sentencia; úsalo con cuidado.
  • Compara mediciones antes y después de cada cambio.

Conceptos relacionados

Fuentes técnicas consultadas

Se utilizaron para comprobar el propósito, las opciones y las advertencias. La explicación y los ejemplos son originales.