Skip site navigation (1) Skip section navigation (2)

Re: Forcing filter/join order?

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 (view raw or flat)
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


In response to

Responses

pgsql-performance by date

Next:From: Stephan SzaboDate: 2004-02-19 03:14:52
Subject: Re: Forcing filter/join order?
Previous:From: Stephan SzaboDate: 2004-02-19 00:56:22
Subject: Re: Forcing filter/join order?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group