Re: Eliminating unnecessary left joins

From: "Zeugswetter Andreas ADI SD" <ZeugswetterA(at)spardat(dot)at>
To: "Robert Haas" <Robert(dot)Haas(at)dyntek(dot)com>, <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Eliminating unnecessary left joins
Date: 2007-04-13 08:04:20
Message-ID: E1539E0ED7043848906A8FF995BDA57901E7BE9A@m0143.s-mxs.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


> I have this exact problem a lot. There are actually cases
> where you can eliminate regular joins, not just left joins.
> For example:
>
> CREATE TABLE partner (
> id serial,
> name varchar(40) not null,
> primary key (id)
> );
>
> CREATE TABLE project (
> id serial,
> name varchar(40) not null,
> partner_id integer not null references project (id)

^^^^^^^ -- I assume typo, should be partner
> );
>
> CREATE VIEW project_view AS
> SELECT p.id, p.name, p.partner_id, pp.name AS partner FROM
> project p, partner pp WHERE p.partner_id = pp.id;

Same advice to you:

1. add not null to your id's
2. CREATE VIEW project_view AS
SELECT p.id, p.name, p.partner_id, pp.name AS partner FROM
project p left outer join partner pp ON p.partner_id = pp.id;
3. wait (or implement :-) the left join optimization in pg

Andreas

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Magnus Hagander 2007-04-13 08:21:42 Re: conflicting gettimeofday with MinGW
Previous Message Magnus Hagander 2007-04-13 07:06:33 Re: Vista/IPv6