Throwing unnecessary joins away - Mailing list pgsql-performance

From Ottó Havasvölgyi
Subject Throwing unnecessary joins away
Date
Msg-id 34608c0c0601120418n1af567b9n@mail.gmail.com
Whole thread Raw
Responses Re: Throwing unnecessary joins away
List pgsql-performance
Hi all,
 
Is PostgreSQL able to throw unnecessary joins?
For example I have two tables, and I join then with their primary keys, say type of bigint . In this case if I don't reference to one of the tables anywhere except the join condition, then the join can be eliminated.
Or if I do a "table1 left join table2 (table1.referer=table2.id)"  (N : 1 relationship), and I don't reference table2 anywhere else, then it is unnecessary.
Primary key - primary key joins are often generated by O/R mappers. These generated queries could be optimized even more by not joining if not necessary.
 
You may say that I should not write such queries. The truth is that the O/R mapper is generating queries on views, and it does not use every field every time, but even so the query of the view is executed with the same plan by PostgreSQL, although some joins are unnecessary.
 
So basically this all is relevant only with views.
 
Best Regards,
Otto

pgsql-performance by date:

Previous
From: Simon Riggs
Date:
Subject: Re: Extremely irregular query performance
Next
From: Alessandro Baretta
Date:
Subject: Re: Throwing unnecessary joins away