diff --git a/src/man/explain.l b/src/man/explain.l index 2e15c0e0ed..4e49254061 100644 --- a/src/man/explain.l +++ b/src/man/explain.l @@ -1,7 +1,7 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/explain.l,v 1.4 1997/01/16 14:56:59 momjian Exp $ -.TH EXPLAIN SQL 11/05/95 PostgreSQL PostgreSQL +.\" $Header: /cvsroot/pgsql/src/man/Attic/explain.l,v 1.5 1997/06/12 23:45:54 thomas Exp $ +.TH EXPLAIN SQL 06/12/97 PostgreSQL PostgreSQL .SH NAME explain \(em explains statement execution details .SH SYNOPSIS @@ -12,6 +12,50 @@ explain \(em explains statement execution details This command outputs details about the supplied query. The default output is the computed query cost. \f2verbose\f1 displays the full query plan and cost. + +.SH EXAMPLES +In the examples, the table has a single column of float4. +\fBcost\fR is the cost of scanning a base/join relation, +\fBsize\fR is the expected number of tuples from a scan, +\fBwidth\fR is the length of a tuple. + +.nf +tgl=> explain select a from test\g +NOTICE:QUERY PLAN: + +Seq Scan on test (cost=0.00 size=0 width=4) + +EXPLAIN +tgl=> explain verbose select sum(a) from test; +NOTICE:QUERY PLAN: + +{AGG :cost 0 :size 0 :width 0 :state nil :qptargetlist + ({TLE :resdom {RESDOM :resno 1 :restype 700 :reslen 4 :resname "sum" + :reskey 0 :reskeyop 0 :resjunk 0} + :expr {AGGREG :aggname "sum" :basetype 700 :aggtype 700 :aggno 0 + :target {VAR :varno 1 :varattno 1 :vartype 700 :varnoold 1 :varoattno 1}}}) + :qpqual nil :lefttree {SEQSCAN :cost 0 :size 0 :width 4 :state nil + :qptargetlist ({TLE :resdom {RESDOM :resno 1 :restype 700 :reslen 4 + :resname "null" :reskey 0 :reskeyop 0 :resjunk 0} + :expr {VAR :varno 1 :varattno 1 :vartype 700 :varnoold 1 :varoattno 1}}) + :qpqual nil :lefttree nil :righttree nil :scanrelid 1} :righttree nil :numagg 1 } + +Aggregate (cost=0.00 size=0 width=0) + -> Seq Scan on test (cost=0.00 size=0 width=4) +.fi + +The Postgres optimizer has chosen to use a sequential scan to retrieve rows from +this table. Indices will used by the optimizer +after tables grow large enough to warrant the access +overhead; typically this might happen when tables have a few hundred rows. + +.SH "SEE ALSO" +delete(l), +insert(l), +select(l). + +.SH BUGS + .PP The query cost and plan can be affected by running vacuum.