Обсуждение: Newbie question: ultra fast count(*)

Поиск
Список
Период
Сортировка

Newbie question: ultra fast count(*)

От
Rodrigo Madera
Дата:
I have been reading all this technical talk about costs and such that
I don't (_yet_) understand.

Now I'm scared... what's the fastest way to do an equivalent of
count(*) on a table to know how many items it has?

Thanks,
Rodrigo

Re: Newbie question: ultra fast count(*)

От
Jaime Casanova
Дата:
On 11/25/05, Rodrigo Madera <rodrigo.madera@gmail.com> wrote:
> I have been reading all this technical talk about costs and such that
> I don't (_yet_) understand.
>
> Now I'm scared... what's the fastest way to do an equivalent of
> count(*) on a table to know how many items it has?
>
> Thanks,
> Rodrigo
>

you really *need* this?

you can do
SELECT reltuples FROM pg_class WHERE relname = 'your_table_name';

but this will give you an estimate... if you want real values you can
make a TRIGGER that maintain a counter in another table

--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

Re: Newbie question: ultra fast count(*)

От
"Merlin Moncure"
Дата:
> I have been reading all this technical talk about costs and such that
> I don't (_yet_) understand.
>
> Now I'm scared... what's the fastest way to do an equivalent of
> count(*) on a table to know how many items it has?

Make sure to analyze the database frequently and check pg_class for
reltuples field.  This gives 0 time approximations of # row in table at
the time of the last analyze.

Many other approaches...check archives.  Also your requirements are
probably not as high as you think they are ;)

Merlin