考虑以下两个查询:
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会“重写”查询以优化它们,因此这取决于您使用的系统,我想它们最终将在大多数“良好”数据库上提供相同的性能。
我建议选择一个更清晰,更易于维护的设备,以我的钱,这是第一个。调试子查询要容易得多,因为它可以独立运行以检查是否正常。