Luke Lonergan wrote:The problem is that the implied join predicate is not being propagated. This is definitely a planner deficiency.IIRC only equality conditions are propagated and gt, lt, between aren't. I seem to remember that the argument given was that the cost of checking for the ability to propagate was too high for the frequency when it ocurred.Of course, what was true for code and machines of 5 years ago might not be so today.
Suggestion : when executing a one-off sql statement, optimizer should try to offer "best effort while being fast" ; when making a plan that will be reused many times (ie PREPARE, functions...) planning time could be muuuuch longer...