Re: Seqscan in MAX(index_column) - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Seqscan in MAX(index_column)
Date
Msg-id 200309041719.h84HJwa28484@candle.pha.pa.us
Whole thread Raw
In response to Re: Seqscan in MAX(index_column)  (Greg Stark <gsstark@mit.edu>)
Responses Re: Seqscan in MAX(index_column)  (Andreas Pflug <pgadmin@pse-consulting.de>)
Re: Seqscan in MAX(index_column)  (Greg Stark <gsstark@mit.edu>)
List pgsql-hackers
Greg Stark wrote:
> It has nothing to do with MVCC. It has to do with implementing this is hard in
> the general case.
> 
> Think of examples like:
> 
> select max(foo) group by bar;
> 
> or
> 
> select max(foo) where xyz = z;
> 
> To do it properly max/min have to be special-cased and tightly integrated with
> other code to handle index scans and aggregates. As it currently stands
> they're implemented the same way as any other aggregate, which means they get
> to see all the records in the grouping.
> 
> This is a frequently asked question, I'm surprised you didn't find stuff
> searching with google. There have been numerous long discussions on this topic
> not long ago. People are still trying to think about how to handle this
> better.

The FAQ does have the example of using ORDER BY LIMIT 1 for MAX().  What
we don't have a workaround for is COUNT(*).  I think that will require
some cached value that obeys MVCC rules of visibility.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Win32 native port
Next
From: Tom Lane
Date:
Subject: Re: TCP/IP with 7.4 beta2 broken?