Guide · Every panel
Plan tab
The Plan tab is Pro. Run a statement, then click Plan in the result pane. Seqora runs its own EXPLAIN, never your run, as Why is this query slow? describes.
Header
EXPLAINorEXPLAIN ANALYZE, with execution and planning time andwork_memonce analyzed.Cancelwhile the analyze runs.Analyze in rollbackon a write: "Runs the statement inside BEGIN … ROLLBACK". On a locked connection it is disabled withThe connection is locked read-only. On a statement Seqora can't prove read-only it first asksRun this statement to analyze it?, since sequence values, trigger side effects and locks are not undone, andRun and roll backneedsRUNtyped on production.Capture the plan again, orSQL changedonce the editor text no longer matches the plan.Plan lens:FlowandTime map.Estimatesshows planner estimates as dashed outlines, on analyzed plans only.Raw plan JSON, withCopy.
Before a run the tab reads No plan yet. After a failed run, No plan captured; after a cancelled one, Run cancelled; each with Capture estimate, which plans the statement without running it. The lens you chose survives a restart.
Row flow
Nodes run right to left. A band's width is the rows leaving a node, multiplied out over loops.
Nis actual rows,≈Nan estimate.- A dashed ghost band is the estimate, drawn when it is off by more than 2×.
┅ Nlabels it once the error passes 10×. ↻ ×Nunder a band counts loops.−Nbelow a scan is rows a filter threw away.- A spill label marks a node that wrote to disk.
The slow query's row flow, each notation marked once.
The slow query's row flow, each notation marked once.
- The band into the scan: the rows it read.
207K ┅ 612: actual rows, then the ghost estimate.−11.8M: the filter's drain.↻ ×207K ┅ ×612: loops, actual and estimated.1.64 s: self time.- The result end, off to the right.
Beside each scan, a table wheel: the rim is the table's pages, the hub the index, spokes the lookups or page bitmap, an arrow a full scan. Double-click one for the TABLE WHEEL guide.
Time strip
Where the time went, or Where the cost is without timings: one segment per node, plus Planning, JIT, Triggers and Serialize. Hover for Self time or Self cost, Share, With inputs, Rows, Est. rows, Loops, Spilled.
Inspector
Click a node:
RowsorEstimated rows: read against kept, or in against out.Rows per loopandLoops:on target, or the factor more or fewer.Pages: cache, disk and temp reads,all cachedor the sharefrom disk.Memory: shown when the node spilled, with thework_memmark.Indexes · <table>: each index tagged✓ used,invalid,not chosen,not leadingorpartial. Asuggestedindex hasTest, which plans again with a hypothetical index and prints the cost before and after.heap ordersketches the correlation.- Conditions:
Filter,Index Cond.
The inspector for Seq Scan on orders.
The inspector for Seq Scan on orders.
Rows: read against kept.Rows per loop: noLoopsruler, because the scan ran once.Pages: cache against disk.Indexes · orders: every index, tagged.suggested, withTest.
Findings
Badges on nodes match the list, or No findings.
Seq Scan on <table>:Test indexon PostgreSQL,Copy CREATE INDEXon the other engines.Estimate off N×:Copy ANALYZE <table>.<node> spilled to diskandBitmap went lossy:Retry · <work_mem>on PostgreSQL reads.Fewer workers launched.
Per engine
| Engine | Plan tab |
|---|---|
| PostgreSQL | Everything above. Test and Test index need hypopg. |
| MySQL | Needs 8.0.18 or later. Reads only are analyzed. |
| MariaDB | Reads only are analyzed. |
| SQLite | EXPLAIN QUERY PLAN, estimates only. |