Re: Select max(foo) and select count(*) optimization - Mailing list pgsql-performance

From D'Arcy J.M. Cain
Subject Re: Select max(foo) and select count(*) optimization
Date
Msg-id 200401061757.05278.darcy@druid.net
Whole thread Raw
In response to Re: Select max(foo) and select count(*) optimization  (Shridhar Daithankar <shridhar_daithankar@persistent.co.in>)
Responses Re: Select max(foo) and select count(*) optimization
List pgsql-performance
On January 6, 2004 07:20 am, Shridhar Daithankar wrote:
> On Tuesday 06 January 2004 17:48, D'Arcy J.M. Cain wrote:
> > On January 6, 2004 01:42 am, Shridhar Daithankar wrote:
> > cert=# select relpages,reltuples::bigint from pg_class where relname=
> > 'certificate';
> >  relpages | reltuples
> > ----------+-----------
> >    399070 |  24858736
> > (1 row)
> >
> > But:
> >
> > cert=# select count(*) from certificate;
> > [*Crunch* *Crunch* *Crunch*]
> >   count
> > ----------
> >  19684668
> > (1 row)
> >
> > Am I missing something?  Max certificate_id is 20569544 btw.
>
> Do 'vacuum analyze certificate' and try..:-)

Kind of invalidates the part about being accurate then, don't it?  Besides, I
vacuum that table every day (*) and we have reorganized the schema so that we
never update it except in exceptional cases.  I would be less surprised if
the result was less than the real count since we only insert into that table.

In any case, if I have to vacuum a 20,000,000 row table to get an accurate
count then I may as well run count(*) on it.

(*): Actually I only analyze but I understand that that should be sufficient.

--
D'Arcy J.M. Cain <darcy@{druid|vex}.net>   |  Democracy is three wolves
http://www.druid.net/darcy/                |  and a sheep voting on
+1 416 425 1212     (DoD#0082)    (eNTP)   |  what's for dinner.

pgsql-performance by date:

Previous
From: Josh Berkus
Date:
Subject: Re: PgAdmin startup query VERY slow
Next
From: Tom Lane
Date:
Subject: Re: PgAdmin startup query VERY slow