From: | Josh Berkus <josh(at)agliodbs(dot)com> |
---|---|
To: | Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> |
Cc: | pgsql-performance <pgsql-performance(at)postgresql(dot)org> |
Subject: | Re: Forcing filter/join order? |
Date: | 2004-02-19 01:18:22 |
Message-ID: | 200402181718.22687.josh@agliodbs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Stephan,
> Can you give more information? I know that I'm not exactly certain what
> the situation is from the above and the original query/explain piece.
>
Believe me, if I posted the query it wouldn't help. Heck, I'd have trouble
following it without my notes.
a simplifed version:
SELECT events.*, cases.case_name
FROM events LEFT OUTER JOIN cases ON events.case_id = cases.case_id
WHERE (event_date >= '2004-03-05' OR (event_date + duration) <= '2004-02-18')
AND events.status <> 0;
... this is to get me all vaild events which overlap with the range
'2004-02-18' to '2004-03-05'.
I had thought, in 7.4, that adding an index on (event_date, (event_date +
duration)) would improve the execution of this query. It doesn't,
presumably because the multi-column index can't be used for both ascending
and descending sorts at the same time, and event_date >= '2004-03-05' isn't
selective enough.
There was a workaround for this posted on hackers about a year ago as I
recally, that involved creating custom operators for indexing. Too much
trouble when there's a hackish workaround (due to the fact that events have
to be less than a month long).
--
-Josh Berkus
Aglio Database Solutions
San Francisco
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2004-02-19 03:14:52 | Re: Forcing filter/join order? |
Previous Message | Stephan Szabo | 2004-02-19 00:56:22 | Re: Forcing filter/join order? |