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?  (Dawid Kuroczko <qnex42@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Steve Wampler
Дата:
Сообщение: Re: Make COUNT(*) Faster?
Следующее
От: Dawid Kuroczko
Дата:
Сообщение: Re: Make COUNT(*) Faster?