| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Alexander Staubo <alex(at)bengler(dot)no> |
| Cc: | pgsql-performance <pgsql-performance(at)postgresql(dot)org> |
| Subject: | Re: Yet another slow nested loop |
| Date: | 2009-06-16 14:36:57 |
| Message-ID: | 14270.1245163017@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
Alexander Staubo <alex(at)bengler(dot)no> writes:
> Here's the query:
> select photos.*
> from photos
> inner join event_participations on
> event_participations.user_id = photos.creator_id and
> event_participations.attend = true
> inner join event_instances on
> event_instances.id = event_participations.event_instance_id
> where (
> (event_instances.venue_id = 1290) and
> (photos.taken_at > (event_instances.time + interval '-3600 seconds')) and
> (photos.taken_at < (event_instances.time + interval '25200 seconds'))
> )
> order by taken_at desc
> limit 20
> It occasionally takes four minutes to run:
Actually the easiest way to fix that is to get rid of the LIMIT.
(Maybe use a cursor instead, and fetch only twenty rows.) LIMIT
magnifies the risks from any estimation error, and you've got a lot
of that here ...
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alberto Dalmaso | 2009-06-16 14:45:53 | Re: performance with query |
| Previous Message | Kevin Grittner | 2009-06-16 14:21:18 | Re: performance with query |