We report planning and execution time when EXPLAIN ANALYZE is issued.
We do not have facility to report planning time as part EXPLAIN
output. In order to get the planning time, one has to issue EXPLAIN
ANALYZE which involves executing the plan, which is unnecessary.

We report planning and execution times when es->summary is true. It is
set to true when es->analyze is true.
 211     /* currently, summary option is not exposed to users; just set it */
 212     es->summary = es->analyze;

The comment was introduced by commit

commit 90063a7612e2730f7757c2a80ba384bbe7e35c4b
Author: Tom Lane <t...@sss.pgh.pa.us>
Date:   Wed Oct 15 18:50:13 2014 -0400

    Print planning time only in EXPLAIN ANALYZE, not plain EXPLAIN.

    We've gotten enough push-back on that change to make it clear that it
    wasn't an especially good idea to do it like that.  Revert plain EXPLAIN
    to its previous behavior, but keep the extra output in EXPLAIN ANALYZE.
    Per discussion.

    Internally, I set this up as a separate flag ExplainState.summary that
    controls printing of planning time and execution time.  For now it's
    just copied from the ANALYZE option, but we could consider exposing it
    to users.

The discussion referred to seems to be [1]. Here's patch to expose the
"summary" option as mentioned in the last paragraph of above commit
message. Right now I have named it as "summary", but I am fine if we
want to change it to something meaningful. "timing" already has got
some other usage, so can't use it here.

One can use this option as
postgres=# explain (summary on) select * from pg_class c, pg_type t
where c.reltype = t.oid;
                                QUERY PLAN
 Hash Join  (cost=17.12..35.70 rows=319 width=511)
   Hash Cond: (c.reltype = t.oid)
   ->  Seq Scan on pg_class c  (cost=0.00..14.19 rows=319 width=259)
   ->  Hash  (cost=12.61..12.61 rows=361 width=256)
         ->  Seq Scan on pg_type t  (cost=0.00..12.61 rows=361 width=256)
 Planning time: 48.823 ms
(6 rows)

When analyze is specified, summary is also set to ON. By default this
flag is OFF.

Suggestions welcome.


[2] https://www.postgresql.org/message-id/19766.1413129321%40sss.pgh.pa.us
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

Attachment: pg_explain_plan_time.patch
Description: binary/octet-stream

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to