Keep in mind that the statement is actually executed when
- ANALYZE is used. Although
+ the ANALYZE option is used. Although
EXPLAIN will discard any output that a
SELECT would return, other side effects of the
statement will happen as usual. If you wish to use
In order to allow the
PostgreSQL query
planner to make reasonably informed decisions when optimizing
- queries, the ANALYZE statement should be run to
- record statistics about the distribution of data within the
- table. If you have not done this (or if the statistical
- distribution of the data in the table has changed significantly
- since the last time ANALYZE was run), the
- estimated costs are unlikely to conform to the real properties of
- the query, and consequently an inferior query plan might be chosen.
+ queries, the
+ statement should be run to record statistics about the distribution
+ of data within the table. If you have not done this (or if the
+ statistical distribution of the data in the table has changed
+ significantly since the last time ANALYZE was
+ run), the estimated costs are unlikely to conform to the real
+ properties of the query, and consequently an inferior query plan
+ might be chosen.
- Genetic query optimization (
GEQO) randomly
- tests execution plans. Therefore, when the number of tables exceeds
- geqo_threshold> causing genetic query optimization to be
- used, the execution plan is likely to change each time the statement
- is executed.
+ Genetic query optimization (
GEQO) randomly
tests
+ execution plans. Therefore, when the number of join relations
+ exceeds causing genetic query
+ optimization to be used, the execution plan is likely to change
+ each time the statement is executed.
+ In order to measure the runtime cost of each node in the execution
+ plan, the current implementation of EXPLAIN
+ ANALYZE can add considerable profiling overhead to query
+ execution. As a result, running EXPLAIN ANALYZE
+ on a query can sometimes take significantly longer than executing
+ the query normally. The amount of overhead depends on the nature of
+ the query.
+
- And here is an example of a query plan for a query
- using an aggregate function:
+ Here is an example of a query plan for a query using an aggregate
+ function:
EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;