that's the purpose of doing a left join and then requiring the value to be null. It actually accomplishes the same things as a "not in"... select * from t1 left outer join t2 on t1.col1 = t2.col1 where t2.col1 is null is functionally equivalent to select * from t1 where col1 not in (select col1 from t2); I'm a bit surprised that the not exists doesn't use the index on t2. select * from t1 where not exists (select * from t2 where col1=t1.col1) I would have thought that it did. select * from
... View more