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 200401060718.08444.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
Re: Select max(foo) and select count(*) optimization
List pgsql-performance
On January 6, 2004 01:42 am, Shridhar Daithankar wrote:
> On Tuesday 06 January 2004 01:22, Rod Taylor wrote:
> > Anyway, with Rules you can force this:
> >
> > ON INSERT UPDATE counter SET tablecount = tablecount + 1;
> >
> > ON DELETE UPDATE counter SET tablecount = tablecount - 1;
>
> That would generate lot of dead tuples in counter table. How about
>
> select relpages,reltuples from pg_class where relname=<tablename>;
>
> Assuming the stats are recent enough, it would be much faster and
> accurate..

Well, I did this:

cert=# select relpages,reltuples from pg_class where relname= 'certificate';
 relpages |  reltuples
----------+-------------
   399070 | 2.48587e+07
(1 row)

Casting seemed to help:

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.

--
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: Shridhar Daithankar
Date:
Subject: Re: Select max(foo) and select count(*) optimization
Next
From: Shridhar Daithankar
Date:
Subject: Re: Select max(foo) and select count(*) optimization