Re: Reporting planning time with EXPLAIN
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2016-12-28T12:48:40Z
Lists: pgsql-hackers
On Tue, Dec 27, 2016 at 1:27 PM, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com> wrote: > Hi, > 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. > +1. I think getting to know planning time is useful for cases when we are making changes in planner to know if the changes has introduced any regression. > > 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. > I am not sure whether using *summary* to print just planning time is a good idea. Another option could be SUMMARY_PLAN_TIME. + /* Execution time matters only when analyze is requested */ + if (es->summary && es->analyze) Do you really need es->summary in above check? We should update documentation of Explain command, but maybe that can wait till we finalize the specs. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Expose explain's SUMMARY option
- f9b1a0dd403e 10.0 landed
-
Print planning time only in EXPLAIN ANALYZE, not plain EXPLAIN.
- 90063a7612e2 9.5.0 cited