> 
> On 30/09/2011, at 8:57 AM, Jason Long wrote:
> 
>> I thought I had read somewhere that Postges could ignore a join if it
>> was not necessary because there were no columns from the table or view
>> selected in the query.  Is this possible?
> 
> You might be thinking of this enhancement introduced in 9.0:
> 
> http://www.postgresql.org/docs/9.0/static/release-9-0.html#AEN99923
> 
> Remove unnecessary outer joins (Robert Haas)
> 
> Outer joins where the inner side is unique and not referenced above the join 
> are unnecessary and are therefore now removed. This will accelerate many 
> automatically generated queries, such as those created by object-relational 
> mappers (ORMs).
> 

Ack! Hit send too early.

Note that enhancement addresses only the case where the inner join is unique 
(ie a primary key or covered by a unique constraint).  My understanding of this 
is that in this case the outer join won't affect the number of rows returned, 
so if it's not used it's not necessary.  Without the unique constraint, or if 
it's not an outer join it still needs to be included, even if you're not 
referencing the table in select / conditions because the join affects the 
number of rows…. HTH.. and I hope I understand this correctly

Reply via email to