I have a 1:1 relationship between two tables. I want to find all the rows in table A that don\'t have a corresponding row in table B. I use this query:
SELEC
You can also use exists, since sometimes it's faster than left join. You'd have to benchmark them to figure out which one you want to use.
select
id
from
tableA a
where
not exists
(select 1 from tableB b where b.id = a.id)
To show that exists can be more efficient than a left join, here's the execution plans of these queries in SQL Server 2008:
left join - total subtree cost: 1.09724:

exists - total subtree cost: 1.07421:
