Re: "select count(*) from contacts" is too slow!

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Paul Serby <paul(dot)serby(at)clockltd(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: "select count(*) from contacts" is too slow!
Date: 2003-10-07 18:46:53
Message-ID: 20031007114534.T53246@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, 7 Oct 2003, Paul Serby wrote:

> Why does '*select count(id) from "tblContacts"'* do a sequential scan
> when the field '*id*' is indexed using a btree?
>
> MySql simply looks at the index which is keeping a handy record of the
> number of rows.
>
> Can anybody explain how and why postgres does this query like it does?

Because the index doesn't contain enough information to determine if a
particular row is visible to your transaction or not. It would have to go
read the table to find that out, at which point using the index doesn't
help. There's been a recent discussion of this on one of the lists
(either -general or -performance I'd guess) that you might want to look up
in the archives.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Gaetano Mendola 2003-10-07 21:33:00 Re: concenation of strings and null values
Previous Message Rick Gigger 2003-10-07 18:43:21 Re: Possible bug on insert