| From: | "Peter Childs" <peterachilds(at)gmail(dot)com> |
|---|---|
| To: | |
| Cc: | pgsql-performance(at)postgresql(dot)org |
| Subject: | Re: optimize query with a maximum(date) extraction |
| Date: | 2007-09-05 12:43:24 |
| Message-ID: | a2de01dd0709050543j57de8774s9e9e0a576cc21bd1@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
On 05/09/07, Gregory Stark <stark(at)enterprisedb(dot)com> wrote:
>
> "Gregory Stark" <stark(at)enterprisedb(dot)com> writes:
>
> > "JS Ubei" <jsubei(at)yahoo(dot)fr> writes:
> >
> >> I need to improve a query like :
> >>
> >> SELECT id, min(the_date), max(the_date) FROM my_table GROUP BY id;
> >...
> > I don't think you'll find anything much faster for this particular
> query. You
> > could profile running these two (non-standard) queries:
> >
> > SELECT DISTINCT ON (id) id, the_date AS min_date FROM my_table ORDER BY
> id, the_date ASC
> > SELECT DISTINCT ON (id) id, the_date AS max_date FROM my_table ORDER BY
> id, the_date DESC
>
> Something else you might try:
>
> select id,
> (select min(the_date) from my_table where id=x.id) as min_date,
> (select max(the_date) from my_table where id=x.id) as max_date
> from (select distinct id from my_table)
>
> Recent versions of Postgres do know how to use the index for a simple
> ungrouped min() or max() like these subqueries.
>
> This would be even better if you have a better source for the list of
> distinct
> ids you're interested in than my_table. If you have a source that just has
> one
> record for each id then you won't need an extra step to eliminate
> duplicates.
>
>
My personal reaction is why are you using distinct at all?
why not
select id,
min(the_date) as min_date,
max(the_date) as max_date
from my_table group by id;
Since 8.0 or was it earlier this will use an index should a reasonable one
exist.
Peter.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Pavel Stehule | 2007-09-05 12:48:18 | Re: optimize query with a maximum(date) extraction |
| Previous Message | Gregory Stark | 2007-09-05 12:06:01 | Re: optimize query with a maximum(date) extraction |