Query Plans
Query Plans help you inspect how a database plans or executes a SQL statement. Use them when a query is slow, returns fewer rows than expected, or needs a quick check before you tune indexes or joins.
What this page helps you do
- Run a query plan from the SQL Console.
- Compare operators in the Plan table.
- Inspect useful details for the selected node.
- Use Raw output when you need the exact database response.
Prerequisites
- Open Data Explorer.
- Open a PostgreSQL, MySQL, or DuckDB-backed SQL Console tab.
- Write a read query such as
SELECT .... Avoid running plan analysis on mutating statements unless you understand how your database handlesEXPLAIN ANALYZE.
Open a query plan
- Open the SQL Console for a supported connection.
- Write the SQL statement you want to inspect.
- Click Plan in the toolbar.
- Wait for the results panel to open.
- Use the Plan tab for the compact plan view.
- Use the Raw tab when you need the exact output returned by the database.
You can still write EXPLAIN manually. The Plan button is the fastest path
for visual inspection because it asks the backend for a structured plan when the
database supports it.
Plan view
The Plan tab is organized for comparison first:
| Area | Use it for |
|---|---|
| Summary chips | Planning time, execution time, root operator, largest estimate gap, operator counts |
| Search | Find operators, tables, indexes, conditions, or cache keys |
| Signals only | Filter to rows with warnings or estimate gaps |
| Operator table | Compare nodes by operator, table/entity, rows, cost/runtime, and warnings |
| Details panel | Inspect fields that are specific to the selected node |
Click a row in the operator table to update the details panel. Only one selected node is shown at a time.
Warnings and signals are related but not the same. A fast query can show
Warnings 0 and still have rows with estimate-gap signals such as
Overestimated x184. Use Signals only to focus on those rows.
Details panel
The details panel does not repeat every raw field. It shows extra information that is useful for the selected operator.
| Operator type | Details you may see |
|---|---|
| Scan | Relation, alias, index, key parts, ref, scan direction, filter, index condition |
| Join | Join type, join condition, merge/hash condition, join filter, inner unique |
| Memoize / cache | Cache key, cache mode, hits, misses, peak memory |
| Sort | Sort key, sort method, filesort/temp table flags, sort memory |
| Aggregate | Strategy, group key, output |
| Limit | Limit-related rows when available |
| Cost | PostgreSQL cost/width or MySQL cost fields |
Empty, false, zero, or irrelevant fields are hidden unless the value itself is useful.
PostgreSQL plans
For PostgreSQL, the visual Plan view uses JSON-format EXPLAIN.
When the plan is analyzed, the UI can show:
- planning and execution time;
- estimated rows compared with actual rows;
- loops;
- node runtime;
- estimate gaps;
- scan, join, cache, sort, aggregate, condition, and cost details.
Use Raw if you need the full PostgreSQL JSON output.
MySQL plans
For regular MySQL plans, the visual Plan view uses EXPLAIN FORMAT=JSON.
MySQL JSON plans do not include runtime loops, actual time, or actual rows. For that reason, the MySQL plan table focuses on fields that are present and useful:
- table;
- estimated rows;
- index;
- key parts;
- ref;
- cost;
- warnings.
For MySQL EXPLAIN ANALYZE, MySQL returns TREE text. DBConvert Streams keeps
that output intact and parses enough structure to show a Plan view when
possible.
Raw tab
The Raw tab is the source-of-truth view. It shows the database output without custom interpretation.
Use Raw when you need to:
- copy the original
EXPLAINresult; - inspect a field that is not shown in the details panel;
- compare DBConvert Streams output with a database CLI or another SQL tool.
Troubleshooting
The Plan button reports that the connection is not supported
Visual plan mode is supported for PostgreSQL, MySQL/MariaDB, and DuckDB-backed
contexts. For other engines, run the database's native EXPLAIN manually if it
is available.
The MySQL table has no time or loops columns
That is expected for EXPLAIN FORMAT=JSON. MySQL does not return runtime loops
or actual time in that format. Use EXPLAIN ANALYZE when you need runtime
execution data.
The Plan tab is less detailed than Raw
That is expected. Plan view is a readable summary and selected-node inspector. Raw remains the full database output.
Signals appear on a fast query
Signals are not automatic tuning instructions. Check the row count, operator type, and Raw output before changing SQL or indexes.