| From: | Bruno Wolff III <bruno(at)wolff(dot)to> | 
|---|---|
| To: | Merlin Moncure <mmoncure(at)gmail(dot)com> | 
| Cc: | Postgresql Performance <pgsql-performance(at)postgresql(dot)org> | 
| Subject: | Re: is it possible to make this faster? | 
| Date: | 2006-05-25 20:23:14 | 
| Message-ID: | 20060525202314.GA20747@wolff.to | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-performance | 
On Thu, May 25, 2006 at 16:07:19 -0400,
  Merlin Moncure <mmoncure(at)gmail(dot)com> wrote:
> been doing a lot of pgsql/mysql performance testing lately, and there
> is one query that mysql does much better than pgsql...and I see it a
> lot in normal development:
> 
> select a,b,max(c) from t group by a,b;
> 
> t has an index on a,b,c.
> 
> in my sample case with cardinality of 1000 for a, 2000 for b, and
> 300000 records in t, pgsql does a seq. scan on dev box in about a
> second (returning 2000 records).
> 
> recent versions of mysql do much better, returning same set in < 20ms.
> mysql explain says it uses an index to optimize the group by somehow.
> is there a faster way to write this query?
SELECT DISTINCT ON (a, b) a, b, c FROM t ORDER BY a DESC, b DESC, c DESC;
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Merlin Moncure | 2006-05-25 20:31:40 | Re: is it possible to make this faster? | 
| Previous Message | Merlin Moncure | 2006-05-25 20:07:19 | is it possible to make this faster? |