Re: does "select count(*) from mytable" always do a seq - Mailing list pgsql-general

From Alex Turner
Subject Re: does "select count(*) from mytable" always do a seq
Date
Msg-id 33c6269f0501081108f134bcc@mail.gmail.com
Whole thread Raw
In response to Re: does "select count(*) from mytable" always do a seq  (Scott Ribe <scott_ribe@killerbytes.com>)
Responses Re: does "select count(*) from mytable" always do a seq
Re: does "select count(*) from mytable" always do a seq
List 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@killerbytes.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@killerbytes.com
> http://www.killerbytes.com/
> (303) 665-7007 voice
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>

pgsql-general by date:

Previous
From: Kris Jurka
Date:
Subject: Re: J2SE 1.5 Cache Rowset(JSR 114 )
Next
From: Alex Turner
Date:
Subject: Re: PostgreSQL users on webhosting