Re: Select max(foo) and select count(*) optimization

Mark Kirkwood <markir@paradise.net.nz>

From: Mark Kirkwood <markir@paradise.net.nz>
To: "D'Arcy J.M. Cain" <darcy@druid.net>
Cc: Shridhar Daithankar <shridhar_daithankar@persistent.co.in>, Postgresql Performance <pgsql-performance@postgresql.org>
Date: 2004-01-06T19:28:45Z
Lists: pgsql-performance
if this situation persists after 'analyze certificate', then you need to:

increase the statistics target 'alter table certificate alter column 
certificate_id set statistics 100' 

or

'vacuum full certificate'

i.e : there are lots of (dead) updated or deleted tuples in the 
relation, distributed in such a way as to throw off analyze's estimate.

regards

Mark

D'Arcy J.M. Cain wrote:

>
>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.
>
>  
>