[PERFORM] Optimizing Outer Joins

`Hello,`

`if i have the following (simple) table layout:`

```create table a (
id serial primary key
);```

```create table b (
id integer references a,
test text
);```

```create view c as
select a.id,b.test from a
left join b
on a.id = b.id;```

`So if i do a select * from c i get the following:`

```test=# EXPLAIN SELECT * from g;
QUERY PLAN
----------------------------------------------------------------
Hash Left Join  (cost=2.45..8.91 rows=8 width=36)
Hash Cond: ("outer".id = "inner".id)
->  Seq Scan on a  (cost=0.00..1.08 rows=8 width=4)
->  Hash  (cost=2.16..2.16 rows=116 width=36)
->  Seq Scan on b  (cost=0.00..2.16 rows=116 width=36)```

`and a select id from c executes as`

```test=# EXPLAIN SELECT id from g;
QUERY PLAN
---------------------------------------------------------------
Hash Left Join  (cost=2.45..7.02 rows=8 width=4)
Hash Cond: ("outer".id = "inner".id)
->  Seq Scan on a  (cost=0.00..1.08 rows=8 width=4)
->  Hash  (cost=2.16..2.16 rows=116 width=4)
->  Seq Scan on b  (cost=0.00..2.16 rows=116 width=4)```

`so the only difference is the width estimation.`

```But why is the scan on table b performed?
If i understand it correctly this is unnecessary because the
result contains only rows from table a.```

```Is there a way to tell postgres not to do the extra work.
My aim is to speed up lookup to complex joins.```

`Thanks`

`Sebastian`

```---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend
```