Pega el plan JSON de EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) para ver su árbol y los puntos calientes que esta página detecta localmente. El plan se analiza en tu navegador: no se ejecuta la consulta ni se contacta ninguna base de datos.
Se ejecuta localmente en tu navegadorPega la salida JSON de EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) y pulsa Analizar plan. La página dibuja el árbol del plan, suma nodos, coste, tiempo real y filas, y enumera los puntos calientes que puede reconocer localmente.
El plan se analiza en el navegador; no se ejecuta ninguna sentencia y nada se envía a una base de datos ni a este sitio. Solo se lee el formato JSON: el formato de texto de psql no sirve como sustituto.
El resumen muestra el número de nodos, el Total Cost más alto del árbol, el tiempo de ejecución (Execution Time si existe; si no, el nodo más lento) y las filas que devolvió el nodo raíz. El árbol repite coste, tiempo real, filas, bucles, la estimación y la condición de índice o filtro de cada nodo.
La lista de hallazgos compara Plan Rows con las filas realmente devueltas: cuando difieren diez veces o más, el nodo aparece con ambos números. También informa de un filtro que descartó al menos diez veces más filas de las que devolvió, de un lado interno ejecutado mil veces o más y del nodo más lento cuando tarda al menos 50 ms y al menos un quinto del tiempo de ejecución.
Un plan sin ANALYZE no tiene filas ni tiempos reales, así que la página lo indica y omite las métricas de tiempo en lugar de mostrar ceros; las comprobaciones de estimación se omiten por el mismo motivo. Los contadores de BUFFERS aparecen en el JSON pero aquí no se interpretan, y el JIT, el reparto entre workers paralelos y el tiempo de disparadores o funciones no se analizan.
Un plan es una ejecución: una caché caliente, otras estadísticas, otro valor de parámetro o una sentencia preparada que reutiliza un plan genérico pueden dar un árbol distinto. Compara planes tomados en las mismas condiciones y trata los hallazgos como indicios que revisar, no como un veredicto.
Un desvío grande de estimación suele indicar estadísticas desactualizadas o un predicado que el planificador no puede estimar (una función sobre la columna, una condición correlacionada, una distribución poco común); ANALYZE, un objetivo de estadísticas mayor o reescribir el predicado suelen cambiar el plan antes de tocar ningún índice.
Las filas descartadas por un filtro apuntan a un índice ausente o no usado y a un predicado poco selectivo, mientras que un lado interno repetido en un bucle anidado es la señal clásica de un join que un hash join resolvería mejor. Cambia una cosa, vuelve a ejecutar con los mismos parámetros y quédate con el plan que gane en la carga que realmente usas.