Re: Make COUNT(*) Faster?
От | Rod Taylor |
---|---|
Тема | Re: Make COUNT(*) Faster? |
Дата | |
Msg-id | 1120836150.24708.251.camel@home обсуждение исходный текст |
Ответ на | Re: Make COUNT(*) Faster? (Steve Wampler <swampler@noao.edu>) |
Ответы |
Re: Make COUNT(*) Faster?
|
Список | pgsql-sql |
> So, leave COUNT(*) alone. But it would be very handy to have a > way to get an approximate table size that is more accurate than is > provided by a pg_class.reltuples that is only updated on vacuums. Create 2 sequences, one for counting tuple additions and one for counting tuple deletions. When you INSERT a tuple, bump the "added" sequence (select nextval()); When you DELETE a tuple, bump the "deleted" sequence (select nextval()); To retrieve an approximate count, take the current value of both sequences (select directly -- don't use currval) and subtract the "deletes" from the "adds". This is a very fast tracking mechanism with the catch that it does not handle rollbacks -- but you only wanted approximate. Put all of the logic inside a pair of triggers and a function within the DB. --
В списке pgsql-sql по дате отправления: