Hi
It seems there are some difference in VARCHAR vs TEXT when postgres tries to decide if a LEFT JOIN is useful or not. I can't figure out if this is intentional because there are some difference between TEXT and VARCHAR that I dont know about or if it's a
bug.
I would expect both examples to produce same query plan
a) create table a (id varchar primary key);
create table b (id varchar primary key); explain select a.* from a left join (select distinct id from b) as b on a.id = b.id;
QUERY PLAN
------------------------------------------------------------------ Hash Right Join (cost=67.60..113.50 rows=1360 width=32) Hash Cond: ((b.id)::text = (a.id)::text) -> HashAggregate (cost=27.00..40.60 rows=1360 width=32) Group Key: b.id -> Seq Scan on b (cost=0.00..23.60 rows=1360 width=32) -> Hash (cost=23.60..23.60 rows=1360 width=32) -> Seq Scan on a (cost=0.00..23.60 rows=1360 width=32) (7 rows) b) create table a (id text primary key); create table b (id text primary key);
explain select a.* from a left join (select distinct id from b) as b on a.id = b.id; QUERY PLAN
------------------------------------------------------ Seq Scan on a (cost=0.00..23.60 rows=1360 width=32) - Kim Carlsen |