Re: why does count take so long?

Dennis Gearon <gearond@fireserve.net>

From: Dennis Gearon <gearond@fireserve.net>
To: Jean-Luc Lachance <jllachan@nsd.ca>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Greg Stark <gsstark@mit.edu>, pgsql-general@postgresql.org
Date: 2003-09-09T16:54:35Z
Lists: pgsql-general
Is improving count(*) <a lot if possible> on one of the TODO lists?

Jean-Luc Lachance wrote:

>How about keeping counts of inserts, deletes and updates per table per
>transaction as part of the live statistics?
>
>
>
>Tom Lane wrote:
>  
>
>>I said:
>>    
>>
>>>Greg Stark <gsstark@mit.edu> writes:
>>>      
>>>
>>>>Things like count(*) could use int4 until it overflows though.
>>>>        
>>>>
>>>I don't see a reasonable way for an aggregate to change state datatype
>>>on the fly; otherwise this would be a great solution.
>>>      
>>>
>>On the other hand, the cost is imposed by the generic aggregate
>>definition that says the aggregate state transition function is an
>>ordinary function.  This is fine for user-defined aggregates, but there
>>is no law that says that all the built-in aggregates must use that same
>>API.  We could probably invent some API that allows COUNT(*) to keep its
>>running count someplace where it needn't be re-palloc'd on every cycle.
>>Something to think about for 7.5 (too late for 7.4 I fear).
>>
>>                        regards, tom lane
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 2: you can get off all lists at once with the unregister command
>>    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>>    
>>
>
>---------------------------(end of broadcast)---------------------------
>TIP 8: explain analyze is your friend
>
>  
>