Simon Riggs wrote:
select a.col2
from a left outer join b on a.col1 = b.col1
where b.col2 = 1;

is logically equivalent to
select a.col2
from a;

No, it's not:

postgres=# CREATE TABLE a (col1 int4, col2 int4);
CREATE TABLE
postgres=# CREATE TABLE b (col1 int4, col2 int4);
CREATE TABLE
postgres=# INSERT INTO a VALUES (1,1);
INSERT 0 1
postgres=# select a.col2 from a;
 col2
------
    1
(1 row)

postgres=# select a.col2 from a left outer join b on a.col1 = b.col1 where b.col2 = 1;
 col2
------
(0 rows)

But anyway, Greg's example looks valid, and proves the point that removing a join isn't always a win.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches

Reply via email to