diff options
Diffstat (limited to 'doc/src/sgml/ref')
| -rw-r--r-- | doc/src/sgml/ref/explain.sgml | 86 |
1 files changed, 41 insertions, 45 deletions
diff --git a/doc/src/sgml/ref/explain.sgml b/doc/src/sgml/ref/explain.sgml index 33c9add4531..28172aac5b7 100644 --- a/doc/src/sgml/ref/explain.sgml +++ b/doc/src/sgml/ref/explain.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/explain.sgml,v 1.16 2002/03/22 19:20:40 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/explain.sgml,v 1.17 2002/03/24 04:31:07 tgl Exp $ PostgreSQL documentation --> @@ -49,7 +49,7 @@ EXPLAIN [ ANALYZE ] [ VERBOSE ] <replaceable class="PARAMETER">query</replaceabl <term>VERBOSE</term> <listitem> <para> - Flag to show detailed query plan. + Flag to show detailed query plan dump. </para> </listitem> </varlistentry> @@ -76,28 +76,24 @@ EXPLAIN [ ANALYZE ] [ VERBOSE ] <replaceable class="PARAMETER">query</replaceabl <variablelist> <varlistentry> - <term><computeroutput> -INFO: QUERY PLAN: -<replaceable>plan</replaceable> - </computeroutput></term> + <term>Query plan</term> <listitem> <para> - Explicit query plan from the <productname>PostgreSQL</productname> backend. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><computeroutput> -EXPLAIN - </computeroutput></term> - <listitem> - <para> - Flag sent after query plan is shown. + Explicit query plan from the <productname>PostgreSQL</productname> + planner. </para> </listitem> </varlistentry> </variablelist> </para> + + <note> + <para> + Prior to <application>PostgreSQL</application> 7.3, the query plan + was emitted in the form of a NOTICE message. Now it appears as a + query result (formatted like a table with a single text column). + </para> + </note> </refsect2> </refsynopsisdiv> @@ -141,13 +137,6 @@ EXPLAIN are close to reality. </para> - <para> - The VERBOSE option emits the full internal representation of the plan tree, - rather than just a summary (and sends it to the postmaster log file, too). - Usually this option is only useful for debugging - <application>PostgreSQL</application>. - </para> - <caution> <para> Keep in mind that the query is actually executed when ANALYZE is used. @@ -165,6 +154,15 @@ ROLLBACK; </para> </caution> + <para> + The VERBOSE option emits the full internal representation of the plan tree, + rather than just a summary. + Usually this option is only useful for debugging + <application>PostgreSQL</application>. The VERBOSE dump is either + pretty-printed or not, depending on the setting of the + <option>EXPLAIN_PRETTY_PRINT</option> configuration parameter. + </para> + <refsect2 id="R2-SQL-EXPLAIN-3"> <refsect2info> <date>1998-04-15</date> @@ -188,50 +186,48 @@ ROLLBACK; <para> To show a query plan for a simple query on a table with a single - <type>int4</type> column and 128 rows: + <type>int4</type> column and 10000 rows: <programlisting> EXPLAIN SELECT * FROM foo; <computeroutput> -INFO: QUERY PLAN: - -Seq Scan on foo (cost=0.00..2.28 rows=128 width=4) - -EXPLAIN + QUERY PLAN +--------------------------------------------------------- + Seq Scan on foo (cost=0.00..155.00 rows=10000 width=4) +(1 row) </computeroutput> </programlisting> </para> <para> - For the same table with an index to support an - <firstterm>equijoin</firstterm> condition on the query, + If there is an index and we use a query with an indexable WHERE condition, <command>EXPLAIN</command> will show a different plan: <programlisting> EXPLAIN SELECT * FROM foo WHERE i = 4; <computeroutput> -INFO: QUERY PLAN: - -Index Scan using fi on foo (cost=0.00..0.42 rows=1 width=4) - -EXPLAIN + QUERY PLAN +-------------------------------------------------------------- + Index Scan using fi on foo (cost=0.00..5.98 rows=1 width=4) + Index Filter: (i = 4) +(2 rows) </computeroutput> </programlisting> </para> <para> - And finally, for the same table with an index to support an - <firstterm>equijoin</firstterm> condition on the query, - <command>EXPLAIN</command> will show the following for a query + And here is an example of a query plan for a query using an aggregate function: <programlisting> -EXPLAIN SELECT sum(i) FROM foo WHERE i = 4; +EXPLAIN SELECT sum(i) FROM foo WHERE i < 4; <computeroutput> -INFO: QUERY PLAN: - -Aggregate (cost=0.42..0.42 rows=1 width=4) - -> Index Scan using fi on foo (cost=0.00..0.42 rows=1 width=4) + QUERY PLAN +--------------------------------------------------------------------- + Aggregate (cost=23.93..23.93 rows=1 width=4) + -> Index Scan using fi on foo (cost=0.00..23.92 rows=6 width=4) + Index Filter: (i < 10) +(3 rows) </computeroutput> </programlisting> </para> |
