cache table

Joseph Shraibman <jks@selectacast.net>

From: Joseph Shraibman <jks@selectacast.net>
To: pgsql-performance@postgresql.org
Date: 2004-05-04T02:24:02Z
Lists: pgsql-performance
I have a big table with some int fields.  I frequently need to do 
queries like:

SELECT if2, count(*) FROM table WHERE if1 = 20 GROUP BY if2;

The problem is that this is slow and frequently requires a seqscan. I'd 
like to cache the results in a second table and update the counts with 
triggers, but this would a) require another UPDATE for each 
INSERT/UPDATE which would slow down adding and updating of data and b) 
produce a large amount of dead rows for vacuum to clear out.

It would also be nice if this small table could be locked into the pg 
cache somehow.  It doesn't need to store the data on disk because the 
counts can be generated from scratch?

So what is the best solution to this problem?  I'm sure it must come up 
pretty often.