Visualizador de PostgreSQL EXPLAIN ANALYZE

Pega la salida de EXPLAIN ANALYZE — texto plano o JSON, directamente desde psql — y descubre dónde gasta realmente el tiempo tu consulta.

🔒 Tu plan de consulta no se envía a ningún servidor. El análisis y el parseo se ejecutan enteramente en tu navegador — esta página funciona incluso sin conexión una vez cargada.

Qué hace esta herramienta

El EXPLAIN ANALYZE de PostgreSQL te dice exactamente cómo se ejecutó una consulta — pero la salida en bruto es notoriamente difícil de leer. Los tiempos son inclusivos (el tiempo de cada nodo contiene el de todos sus hijos), los recuentos de filas están promediados por loop, y el cuello de botella real a menudo está enterrado tres niveles dentro del árbol.

Este visualizador parsea el plan y muestra, para cada nodo:

Cómo obtener un plan

Ejecuta tu consulta con:

EXPLAIN (ANALYZE, BUFFERS)
SELECT ... your query ...;

y pega el resultado arriba — se admiten tanto el formato de texto plano por defecto como FORMAT JSON. BUFFERS es opcional pero recomendable — muestra cuánta E/S realizó cada nodo. Puedes pegar directamente desde psql: la cabecera QUERY PLAN y los caracteres de continuación de línea + se limpian automáticamente.

⚠️ EXPLAIN ANALYZE ejecuta realmente la consulta. Para un INSERT/UPDATE/DELETE, envuélvelo en BEGIN; ... ROLLBACK;.

Compartir un plan

Copiar enlace para compartir codifica el plan completo, comprimido, en la propia URL (la parte tras #). No se sube nada a ningún sitio — el fragmento ni siquiera llega a nuestro servidor web — así que la promesa de cero subidas se mantiene. La otra cara conviene dejarla explícita: el enlace contiene el plan, así que cualquiera a quien se lo envíes puede leer los nombres de tablas, los valores de los filtros y los recuentos de filas que hay en él. Los planes muy grandes producen URLs muy largas; algunas herramientas de chat las truncan, en cuyo caso el destinatario recibe un error claro en lugar de un plan incorrecto.

Avisos que detecta esta herramienta

Cómo leer el flame graph y el árbol

El flame graph de arriba es toda la consulta de un vistazo: cada barra es un nodo del plan, su ancho es el tiempo total dedicado a él (hijos incluidos) y su color indica qué parte del tiempo de la consulta es trabajo propio del nodo — verde para lo barato, rojo para lo caliente. Una barra roja ancha en el fondo es tu cuello de botella; haz clic en ella para saltar al nodo correspondiente en el árbol.

En el árbol, la ejecución empieza en las hojas (los escaneos) y fluye hacia arriba hasta la raíz. La barra horizontal de cada nodo es su parte de tiempo exclusivo: una barra roja en un Seq Scan hoja significa que el tiempo se gasta realmente escaneando, no en el join que hay encima. Haz clic en la cabecera de un nodo para expandir sus detalles — costes, recuentos de filas, condiciones de filtro, uso de buffers — y usa Copiar resumen de texto para pegar un informe compacto en un ticket o en un chat.

Nota sobre consultas paralelas: la atribución de tiempos entre workers paralelos es una aproximación — los hijos de un nodo Gather reportan loops por worker, así que los tiempos exclusivos ahí deben leerse como indicativos.