PostgreSQL EXPLAIN visualizer
Paste the output of EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)
(plain EXPLAIN or text format work too) and get an interactive
tree: where the time went, row estimate misses, sequential scans on big
tables, spilled sorts. Rendered by
pev2, bundled
here so nothing leaves the page.
Reading the result
The widest bar is where your query spends its time; start there. A
Seq Scan on a large table inside a loop usually means a missing
index (the same thing our FK
index check flags from the schema side). A big gap between estimated
and actual rows sends the planner into the wrong join strategy, and an
external merge sort means work_mem was too small for the
sort.