Diagnosticar una consulta lenta a partir de su EXPLAIN ANALYZE

Interpreta el plan de ejecución de una consulta SQL lenta nodo a nodo, localiza el cuello de botella y obtén índices o reescrituras concretas con su coste en escrituras. Pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Incluye 5 variables personalizables y se copia gratis en un clic.

Avanzado · Código · Pendiente de revisión editorial

Prompt

Actúa como DBA y experto en rendimiento de {{motor}}.

Tengo una consulta lenta. Estos son los datos:
- Consulta:
{{consulta}}
- Salida de EXPLAIN (idealmente EXPLAIN ANALYZE con BUFFERS o FORMAT=TREE):
{{plan}}
- Tablas, índices existentes y número aproximado de filas: {{esquema}}
- Frecuencia de ejecución y tiempo aceptable: {{contexto}}

Entregables:
1. Lectura del plan en lenguaje claro, de dentro hacia fuera: qué hace cada nodo, cuántas filas estima frente a cuántas obtiene y cuánto tiempo aporta.
2. El cuello de botella principal y los secundarios, con la evidencia del plan que los demuestra (escaneo secuencial, estimaciones muy desviadas, ordenación en disco, bucle anidado con muchas filas, filtro aplicado tarde, función sobre columna indexada, etc.).
3. Correcciones ordenadas por impacto esperado y esfuerzo:
   - Índices con su `CREATE INDEX` exacto (orden de columnas justificado, índices parciales o de cobertura si procede, y creación sin bloqueo cuando el motor lo permita).
   - Reescritura de la consulta si mejora el plan (por ejemplo, `EXISTS` frente a `IN`, paginación por clave, evitar `OR` sobre columnas distintas).
   - Estadísticas o configuración (ANALYZE, estadísticas extendidas, memoria de trabajo) solo si el plan lo justifica.
4. Coste de cada índice: espacio, impacto en INSERT/UPDATE y si duplica otro índice ya existente.
5. Cómo verificarlo: qué volver a ejecutar y qué cambio debería verse en el plan.

Restricciones:
- Basa cada conclusión en el plan; no prometas mejoras en porcentaje ni en milisegundos.
- Si solo tengo EXPLAIN sin ANALYZE, o falta información del esquema, dímelo y pídemela antes de recomendar índices.
- Advierte si alguna acción bloquea tablas en producción.

Cómo usarlo

  1. Ejecuta EXPLAIN ANALYZE (en PostgreSQL añade BUFFERS) en un entorno con datos realistas, no vacío.
  2. Pega la consulta, el plan completo y la definición de tablas e índices.
  3. Aplica primero la corrección de mayor impacto en un entorno de pruebas y compara el nuevo plan.

Ejemplo de uso

Motor: PostgreSQL 16 · Consulta: pedidos de un cliente en los últimos 90 días ordenados por fecha · Tabla pedidos: 12 millones de filas · Se ejecuta 300 veces por minuto.

Resultado de ejemplo

1. Lectura del plan

  1. Seq Scan on pedidos — recorre ~11,9 M filas para quedarse con las de un cliente. No existe ningún índice que empiece por cliente_id.
  2. Sort (external merge, Disk: 48MB) — ordena por creado_en en disco porque no cabe en work_mem.
  3. Limit — de todo ese trabajo solo usa 20 filas.

2. Cuello de botella

El escaneo secuencial es el problema principal; el sort en disco es consecuencia de él. El plan está recortado (Filter: ...), así que confirma con EXPLAIN (ANALYZE, BUFFERS) las filas reales del filtro.

3. Corrección recomendada

-- Igualdad primero, después la columna de rango/orden:
-- el índice devuelve las filas ya ordenadas y el Limit se detiene en 20
CREATE INDEX CONCURRENTLY idx_pedidos_cliente_creado
    ON pedidos (cliente_id, creado_en DESC);

ANALYZE pedidos;

CONCURRENTLY no bloquea las escrituras, pero tarda más y no puede ejecutarse dentro de una transacción (ojo con las migraciones que la abren por defecto).

4. Coste

AspectoImpacto
DiscoProporcional a 12 M entradas de dos columnas
EscriturasUn índice más que mantener en cada INSERT
DuplicadosNo solapa con el índice en estado

5. Verificación

Vuelve a lanzar el EXPLAIN: deberías ver Index Scan using idx_pedidos_cliente_creado y desaparecer el nodo Sort…

Datos clave

Categoría
Programación y desarrollo · SQL
Tipo de resultado
Código
Nivel
Avanzado
Pensado para
ChatGPT, Claude, Gemini y Microsoft Copilot
Verificado en
Pendiente de verificación editorial
Variables
Motor de base de datos, Consulta SQL, Plan de ejecución, Tablas, índices y volumen y Frecuencia y objetivo
Idioma
Español
Precio
Gratis, sin registro
Actualizado
07/11/2026

Preguntas frecuentes

¿Por qué necesito EXPLAIN ANALYZE y no solo EXPLAIN?

EXPLAIN solo muestra estimaciones. EXPLAIN ANALYZE ejecuta la consulta y muestra filas y tiempos reales, y la diferencia entre ambos es la pista más útil. Ojo: ejecuta de verdad, así que no lo uses con UPDATE o DELETE sin una transacción que deshagas.

¿Añadir más índices siempre acelera la base de datos?

No. Cada índice ocupa espacio y ralentiza las escrituras. Por eso el prompt pide el coste de cada uno y revisa si duplica un índice existente.

¿Para qué sirve este prompt?

Interpreta el plan de ejecución de una consulta SQL lenta nodo a nodo, localiza el cuello de botella y obtén índices o reescrituras concretas con su coste en escrituras.

¿Con qué herramientas de IA funciona?

Está pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.

¿Cómo personalizo el prompt?

Pulsa «Personalizar» y rellena las variables (Motor de base de datos, Consulta SQL, Plan de ejecución, Tablas, índices y volumen y Frecuencia y objetivo). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.

¿Necesito experiencia para usarlo?

Es de nivel avanzado: está pensado para personas con experiencia en el tema que sepan evaluar y ajustar el resultado.

¿Este prompt es gratis?

Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.

¿Puedo fiarme del resultado de la IA?

Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.

Prompts relacionados