GNU/Linux |
RedHat 6.2(Zoot) |
|
![]() |
explain(l) |
![]() |
EXPLAIN − Shows statement execution details
EXPLAIN [ VERBOSE ] query
INPUTS
VERBOSE
Flag to show detailed query plan.
query |
Any query. |
OUTPUTS
NOTICE: QUERY PLAN:
Explicit query plan from the Postgres backend.
EXPLAIN
Flag sent after query plan is shown.
This command outputs details about the supplied query. The default output is the computed query cost. The cost value is only meaningful to the optimizer in comparing various query plans. VERBOSE displays the full query plan and cost to your screen, and pretty-prints the plan to the postmaster log file.
NOTES
There is only sparse documentation on the optimizer’s
use of cost information in Postgres. General information on
cost estimation for query optimization can be found in
database textbooks. Refer to the Programmer’s
Guide in the chapters on indexes and the genetic query
optimizer for more information.
To show a query plan for a simple query on a table with a single int4 column and 128 rows:
EXPLAIN SELECT
* FROM foo;
NOTICE: QUERY PLAN:
Seq Scan on foo (cost=5.22 rows=128 width=4)
EXPLAIN
For the same table with an index to support an equijoin condition on the query, EXPLAIN will show a different plan:
EXPLAIN SELECT
* FROM foo WHERE i = 4;
NOTICE: QUERY PLAN:
Index Scan using fi on foo (cost=2.05 rows=1 width=4)
EXPLAIN
And finally, for the same table with an index to support an equijoin condition on the query, EXPLAIN will show the following for a query using an aggregate function:
EXPLAIN SELECT
sum(i) FROM foo WHERE i = 4;
NOTICE: QUERY PLAN:
Aggregate
(cost=2.05 rows=1 width=4)
-> Index Scan using fi on foo (cost=2.05 rows=1
width=4)
SQL92
There is no EXPLAIN statement defined in SQL92.
![]() |
explain(l) | ![]() |