Re: Suggestions wanted for 7.2.4 query - Mailing list pgsql-performance

From Tom Lane
Subject Re: Suggestions wanted for 7.2.4 query
Date
Msg-id 25878.1052023320@sss.pgh.pa.us
Whole thread Raw
In response to Suggestions wanted for 7.2.4 query  (Josh Berkus <josh@agliodbs.com>)
Responses Re: Suggestions wanted for 7.2.4 query  (Josh Berkus <josh@agliodbs.com>)
List pgsql-performance
Josh Berkus <josh@agliodbs.com> writes:
> SELECT sv_events.*, FALSE AS fuzzy_team FROM sv_events WHERE  EXISTS ( SELECT
> event_id FROM event_days
>  WHERE event_days.event_id = sv_events.event_id AND  (event_day BETWEEN
> ('2003-04-08'::TIMESTAMP WITHOUT TIME ZONE)
>   AND ('2003-06-17 23:59'::TIMESTAMP WITHOUT TIME ZONE) ) );

Is event_days.event_id unique?  If so, try

SELECT sv_events.*, FALSE AS fuzzy_team FROM sv_events, event_days
WHERE
event_days.event_id = sv_events.event_id AND
  (event_days.event_day BETWEEN
('2003-04-08'::TIMESTAMP WITHOUT TIME ZONE)
  AND ('2003-06-17 23:59'::TIMESTAMP WITHOUT TIME ZONE) );

This at least gives you some glimmer of a chance that the restriction on
event_day can be used to avoid computing the entire join represented by
sv_events.  With the exists() form, there's no chance...

            regards, tom lane


pgsql-performance by date:

Previous
From: Christopher Kings-Lynne
Date:
Subject: Re: NOT IN doesn't use index? (fwd)
Next
From: Josh Berkus
Date:
Subject: Re: Suggestions wanted for 7.2.4 query