Visualizador de Plan de Ejecución SQL

Pega la salida de EXPLAIN / EXPLAIN ANALYZE (PostgreSQL/MySQL/SQLite) para renderizar un árbol de costos, marcar divergencias entre filas estimadas y reales, y sugerir índices

Esta herramienta analiza la salida real de EXPLAIN — no el texto estático de la consulta — y renderiza el plan de ejecución como un árbol indentado, coloreado por severidad.

Entradas soportadas (auto-detectadas o seleccionables):

  • PostgreSQL: JSON de EXPLAIN (FORMAT JSON, ANALYZE), o la salida TEXT indentada por defecto.
  • MySQL: salida de EXPLAIN FORMAT=JSON, o el EXPLAIN tabular clásico (id|select_type|table|type|key|rows|Extra).
  • SQLite: texto de EXPLAIN QUERY PLAN (SCAN/SEARCH … USING INDEX …).

Cada nodo muestra: tipo de nodo, relación, índice usado, coste/tiempo estimado, filas estimadas y, con EXPLAIN ANALYZE, filas y tiempos reales. Las divergencias de ≥10× entre filas estimadas y reales se marcan como puntos calientes de estadísticas.

Los diagnósticos cubren: sequential/full table scans en tablas grandes, divergencia de estadísticas (ANALYZE obsoleto), filesorts, tablas temporales, nested loops costosos, predicados no sargables (funciones sobre columnas indexadas), SELECT *, y ORDER BY sin LIMIT — cada uno con una sugerencia concreta de índice o reescritura (p. ej. "añade un índice en users(email)").

Consejo: para la salida más rica, ejecuta EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) en PostgreSQL o EXPLAIN ANALYZE en MySQL para comparar estimaciones con la realidad.

Resultados de ejemplo

1 Ejemplos

Visualizar un EXPLAIN ANALYZE de PostgreSQL con divergencia de filas

Seq Scan estimado en 1000 frente a 95000 reales: punto de estadísticas obsoletas con sugerencia de índice.

Execution plan tree with divergence hotspot and index suggestion.
Ver parámetros de entrada
{ "explainOutput": "[\n {\n \"Plan\": {\n \"Node Type\": \"Seq Scan\",\n \"Relation Name\": \"users\",\n \"Alias\": \"users\",\n \"Filter\": \"((email)::text = '[email protected]')\",\n \"Plan Rows\": 1000,\n \"Plan Width\": 142,\n \"Total Cost\": 1541.00,\n \"Actual Rows\": 95000,\n \"Actual Loops\": 1,\n \"Actual Startup Time\": 0.1,\n \"Actual Total Time\": 12.4\n }\n }\n]", "dialect": "auto", "sql": "SELECT * FROM users WHERE lower(email) = '[email protected]'", "maxDepth": 20 }

Datos clave

Categoría
Desarrollo y Web
Tipos de entrada
textarea, select, number
Tipo de salida
html
Cobertura de muestras
4
API disponible
Yes

Resumen

El Visualizador de Plan de Ejecución SQL transforma la salida de texto o JSON de los comandos EXPLAIN y EXPLAIN ANALYZE de PostgreSQL, MySQL y SQLite en un árbol interactivo y estructurado. Esta herramienta identifica cuellos de botella de rendimiento, resalta discrepancias entre las filas estimadas y reales, y ofrece sugerencias automáticas de indexación para optimizar tus bases de datos.

Cuándo usarlo

  • Cuando una consulta SQL presenta lentitud en producción y necesitas identificar qué operaciones específicas consumen más tiempo o recursos.
  • Al comparar las estimaciones del planificador de la base de datos con los tiempos de ejecución reales para detectar estadísticas desactualizadas.
  • Para validar si una consulta está utilizando correctamente los índices existentes o si requiere la creación de nuevos índices.

Cómo funciona

  • Pega el resultado en formato de texto o JSON de tu comando EXPLAIN o EXPLAIN ANALYZE en el campo de entrada.
  • Selecciona el dialecto correspondiente (PostgreSQL, MySQL o SQLite) o permite que la herramienta lo detecte de forma automática.
  • El analizador procesa la jerarquía del plan y genera un árbol visual interactivo coloreado según la severidad del costo.
  • Revisa las alertas de divergencia de filas y las recomendaciones de índices sugeridas para optimizar la consulta.

Casos de uso

Optimización de consultas lentas mediante la identificación de escaneos de tabla completa (Seq Scan / Full Table Scan).
Diagnóstico de problemas de rendimiento causados por estadísticas obsoletas del planificador de la base de datos.
Diseño y validación de estrategias de indexación basadas en los nodos de unión y filtrado más costosos.

Ejemplos

1. Optimización de Seq Scan en PostgreSQL

Administrador de Bases de Datos
Contexto
Una consulta de búsqueda de usuarios por correo electrónico tarda varios segundos en completarse en una tabla con millones de registros.
Problema
Identificar por qué la base de datos realiza un escaneo secuencial en lugar de usar un índice.
Cómo usarlo
Pega la salida JSON de EXPLAIN (ANALYZE, FORMAT JSON) de la consulta en el visualizador.
Configuración de ejemplo
Dialecto configurado en 'postgresql' y la salida JSON del plan pegada en el área de texto.
Resultado
El visualizador resalta el nodo de Seq Scan en rojo, advierte sobre la divergencia de estadísticas (95,000 filas reales frente a 1,000 estimadas) y sugiere crear un índice en la columna email.

2. Detección de Filesort en MySQL

Desarrollador Backend
Contexto
Una consulta con ordenamiento (ORDER BY) y paginación está consumiendo demasiada memoria en el servidor MySQL.
Problema
Determinar si el ordenamiento se realiza en memoria o disco debido a la falta de un índice compuesto adecuado.
Cómo usarlo
Ejecuta EXPLAIN FORMAT=JSON seguido de la consulta en MySQL, copia el resultado JSON y pégalo en la herramienta.
Configuración de ejemplo
Dialecto configurado en 'mysql' y el JSON de la salida del plan de ejecución pegado en el área de texto.
Resultado
La herramienta muestra un nodo de ordenamiento con la advertencia de 'filesort' y sugiere añadir un índice que cubra tanto el filtro WHERE como las columnas del ORDER BY.

Probar con muestras

json, sql, text

Hubs relacionados

Preguntas frecuentes

¿Qué motores de bases de datos son compatibles?

Es compatible con PostgreSQL (JSON y texto), MySQL (JSON y formato tabular clásico) y SQLite (EXPLAIN QUERY PLAN).

¿Cómo detecta la herramienta las estadísticas desactualizadas?

Compara las filas estimadas por el planificador con las filas reales procesadas; si hay una divergencia de 10 veces o más, lo marca como un punto caliente.

¿Es obligatorio introducir la consulta SQL original?

No, es opcional. La herramienta analiza directamente la salida estructurada del comando EXPLAIN para generar el árbol y los diagnósticos.

¿Qué tipo de problemas de rendimiento puede diagnosticar?

Detecta escaneos secuenciales en tablas grandes, filesorts, tablas temporales, bucles anidados costosos y predicados no sargables.

¿Cómo obtengo la salida más detallada para el análisis?

Ejecuta EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) en PostgreSQL o EXPLAIN ANALYZE en MySQL para incluir datos reales de ejecución.

Documentación de la API

Punto final de la solicitud

POST /es/api/tools/sql-explain-plan-visualizer

Parámetros de la solicitud

Nombre del parámetro Tipo Requerido Descripción
explainOutput textarea -
dialect select No -
sql textarea No -
maxDepth number No -

Formato de respuesta

{
  "result": "
Processed HTML content
", "error": "Error message (optional)", "message": "Notification message (optional)", "metadata": { "key": "value" } }
HTML: HTML

Documentación de MCP

Agregue este herramienta a su configuración de servidor MCP:

{
  "mcpServers": {
    "elysiatools-sql-explain-plan-visualizer": {
      "name": "sql-explain-plan-visualizer",
      "description": "Pega la salida de EXPLAIN / EXPLAIN ANALYZE (PostgreSQL/MySQL/SQLite) para renderizar un árbol de costos, marcar divergencias entre filas estimadas y reales, y sugerir índices",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=sql-explain-plan-visualizer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Puede encadenar múltiples herramientas, por ejemplo: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, máximo 20 herramientas.

Si encuentra algún problema, por favor, póngase en contacto con nosotros en [email protected]