Visualiseur PostgreSQL EXPLAIN ANALYZE

Collez la sortie d'EXPLAIN ANALYZE — texte brut ou JSON, directement depuis psql — et voyez où votre requête passe réellement son temps.

🔒 Votre plan de requête n'est envoyé à aucun serveur. Le parsing et l'analyse s'exécutent entièrement dans votre navigateur — cette page fonctionne même hors ligne une fois chargée.

Ce que fait cet outil

L'EXPLAIN ANALYZE de PostgreSQL vous indique exactement comment une requête a été exécutée — mais la sortie brute est réputée difficile à lire. Les durées sont inclusives (le temps de chaque nœud contient celui de tous ses enfants), les nombres de lignes sont moyennés par boucle, et le véritable goulot d'étranglement est souvent enfoui à trois niveaux de profondeur dans l'arbre.

Ce visualiseur parse le plan et affiche, pour chaque nœud :

Comment obtenir un plan

Exécutez votre requête avec :

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

et collez le résultat ci-dessus — le format texte par défaut et FORMAT JSON sont tous deux pris en charge. BUFFERS est optionnel mais recommandé — il montre combien d'E/S chaque nœud a effectuées. Vous pouvez coller directement depuis psql : l'en-tête QUERY PLAN et les caractères de continuation de ligne + sont nettoyés automatiquement.

⚠️ EXPLAIN ANALYZE exécute réellement la requête. Pour un INSERT/UPDATE/DELETE, encadrez-le dans BEGIN; ... ROLLBACK;.

Partager un plan

Copier le lien de partage encode tout le plan, compressé, dans l'URL elle-même (la partie après #). Rien n'est envoyé nulle part — le fragment n'atteint même jamais notre serveur web — donc la promesse « zéro envoi » tient. Le revers mérite d'être dit explicitement : le lien contient le plan, donc quiconque à qui vous l'envoyez peut y lire les noms de tables, les valeurs de filtre et les nombres de lignes. Les très gros plans produisent des URL très longues ; certains outils de chat les tronquent, auquel cas le destinataire obtient une erreur claire plutôt qu'un plan erroné.

Avertissements que cet outil détecte

Lire le flame graph et l'arbre

Le flame graph en haut, c'est toute la requête d'un coup d'œil : chaque barre est un nœud du plan, sa largeur est le temps total passé dedans (enfants inclus) et sa couleur indique quelle part du temps de la requête correspond au travail propre du nœud — vert pour peu coûteux, rouge pour chaud. Une large barre rouge tout en bas est votre goulot d'étranglement ; cliquez dessus pour sauter au nœud correspondant dans l'arbre.

Dans l'arbre, l'exécution commence aux feuilles (les parcours) et remonte vers la racine. La barre horizontale sur chaque nœud est sa part de temps exclusif : une barre rouge sur un Seq Scan feuille signifie que le temps est réellement passé à parcourir, pas dans la jointure au-dessus. Cliquez sur l'en-tête d'un nœud pour développer ses détails — coûts, nombres de lignes, conditions de filtre, utilisation des buffers — et utilisez Copier le résumé texte pour coller un rapport compact dans un ticket ou un chat.

Note sur les requêtes parallèles : l'attribution des durées entre les workers parallèles est une approximation — les enfants d'un nœud Gather rapportent les loops par worker, donc les temps exclusifs y sont à lire comme indicatifs.