From: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> |
---|---|
To: | Reinoud van Leeuwen <reinoud(at)xs4all(dot)nl> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: performance question |
Date: | 2001-08-28 12:44:33 |
Message-ID: | Pine.BSF.4.21.0108280538210.42516-100000@megazone23.bigpanda.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, 28 Aug 2001, Reinoud van Leeuwen wrote:
> Can somebody explain to me:
>
> > radius=# explain select count (radiuspk) from radius ;
> > NOTICE: QUERY PLAN:
> >
> > Aggregate (cost=12839.79..12839.79 rows=1 width=8)
> > -> Seq Scan on radius (cost=0.00..11843.43 rows=398543 width=8)
> >
> > EXPLAIN
>
>
> This query answers me *instantly* after hitting return
>
> > radius=# select count (radiuspk) from radius ;
> > count
> > --------
> > 398543
> > (1 row)
>
> This query takes about 3 seconds. But the query plan *already* knows the
> number of rows ("rows=398543"). So why does it take 3 seconds. Is my
> assumption correct that the optimiser still can be optimized a little? :-)
Not in this case. The row numbers from explain are just estimates
from the last vacuum. As you modify the table, the estimated rows
will be off.
For example:
sszabo=> create table a (a int);
CREATE
sszabo=> insert into a values (100);
INSERT 808899 1
sszabo=> insert into a values (101);
INSERT 808900 1
sszabo=> explain select count(a) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=22.50..22.50 rows=1 width=4)
-> Seq Scan on a (cost=0.00..20.00 rows=1000 width=4)
EXPLAIN
sszabo=> vacuum analyze a;
VACUUM
sszabo=> explain select count(a) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=1.02..1.02 rows=1 width=4)
-> Seq Scan on a (cost=0.00..1.02 rows=2 width=4)
EXPLAIN
sszabo=> insert into a values (102);
INSERT 808902 1
sszabo=> explain select count(a) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=1.02..1.02 rows=1 width=4)
-> Seq Scan on a (cost=0.00..1.02 rows=2 width=4)
EXPLAIN
sszabo=> vacuum analyze a;
VACUUM
sszabo=> explain select count(a) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=1.04..1.04 rows=1 width=4)
-> Seq Scan on a (cost=0.00..1.03 rows=3 width=4)
EXPLAIN
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Elphick | 2001-08-28 12:50:57 | INTERVAL type: SQL92 implementation |
Previous Message | Peter Eisentraut | 2001-08-28 12:32:48 | Re: performance question |