考虑以下两个查询:
select tblA.a,tblA.b,tblA.c,tblA.d
from tblA
where tblA.a not in (select tblB.a from tblB)
select tblA.a,tblA.b,tblA.c,tblA.d
from tblA left outer join tblB
on tblA.a = tblB.a where tblB.a is null
哪个会更好?我的假设是,一般而言,联接会更好,除非子选择返回非常小的结果集。
最佳答案
RDBMS会“重写”查询以优化查询,因此这取决于您使用的系统,我想它们最终将在大多数“良好”数据库上提供相同的性能。
我建议选择一个更清晰,更易于维护的设备,以我的钱,这是第一个。调试子查询要容易得多,因为它可以独立运行以检查是否正常。