开发者社区 问答 正文

子选择与外部联接

考虑以下两个查询:

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

哪个会更好?我的假设是,一般而言,联接会更好,除非子选择返回非常小的结果集。

展开
收起
心有灵_夕 2019-12-26 22:08:26 797 分享 版权
1 条回答
写回答
取消 提交回答
  • RDBMS会“重写”查询以优化它们,因此这取决于您使用的系统,我想它们最终将在大多数“良好”数据库上提供相同的性能。

    我建议选择一个更清晰,更易于维护的设备,以我的钱,这是第一个。调试子查询要容易得多,因为它可以独立运行以检查是否正常。

    2019-12-26 22:08:34
    赞同 展开评论
问答地址: