Re: does "select count(*) from mytable" always do a seq

From: Alex Turner <armtuk(at)gmail(dot)com>
To: Scott Ribe <scott_ribe(at)killerbytes(dot)com>
Cc: Postgresql-General <pgsql-general(at)postgresql(dot)org>
Subject: Re: does "select count(*) from mytable" always do a seq
Date: 2005-01-08 19:08:57
Message-ID: 33c6269f0501081108f134bcc@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

No offense or anything, but that doesn't make any sense. If you are
running count(*) against a table, it still has to worry about MVCC,
and which rows are visible to your transaction. What difference does
it make, table or index, the system still has to figure out which rows
are visible in the current transaction, so why not use the index?

(The example is really count(pkey) because count(*) is always going to
do a seq scan I reckon - and could probably never use an index).

Alex Turner
NetEconomist

On Fri, 07 Jan 2005 11:17:32 -0700, Scott Ribe
<scott_ribe(at)killerbytes(dot)com> wrote:
> > I guess what I"m really asking is why can't you run aggregates over an index?
>
> It's got to do with MVCC and transaction consistency. Running count(*) or an
> aggregate function on an index could include records that should not be
> visible to your current transaction.
>
> --
> Scott Ribe
> scott_ribe(at)killerbytes(dot)com
> http://www.killerbytes.com/
> (303) 665-7007 voice
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Alex Turner 2005-01-08 19:12:17 Re: PostgreSQL users on webhosting
Previous Message Kris Jurka 2005-01-08 18:26:55 Re: J2SE 1.5 Cache Rowset(JSR 114 )