Re: Forcing filter/join order?
От | Josh Berkus |
---|---|
Тема | Re: Forcing filter/join order? |
Дата | |
Msg-id | 200402181718.22687.josh@agliodbs.com обсуждение исходный текст |
Ответ на | Re: Forcing filter/join order? (Stephan Szabo <sszabo@megazone.bigpanda.com>) |
Ответы |
Re: Forcing filter/join order?
Re: Forcing filter/join order? |
Список | 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
В списке pgsql-performance по дате отправления: