Re: Any was to prevent a join if no columns are selected from a view?

From: Royce Ausburn <royce(dot)ml(at)inomial(dot)com>
To: Royce Ausburn <royce(dot)ml(at)inomial(dot)com>
Cc: mailing(dot)lists(at)octgsoftware(dot)com, pgsql-general(at)postgresql(dot)org
Subject: Re: Any was to prevent a join if no columns are selected from a view?
Date: 2011-09-30 05:04:23
Message-ID: B8D2F7FF-A510-462E-A9BE-F65F1F1BC454@inomial.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


>
> 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

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Venkat Balaji 2011-09-30 05:29:03 Re: could not access file "$libdir/pg_buffercache": No such file or directory
Previous Message Royce Ausburn 2011-09-30 04:59:33 Re: Any was to prevent a join if no columns are selected from a view?