Left join与Not exist的性能对比

Shuang 260 信誉分
2025-02-17T06:31:31.4133333+00:00

我有一个更新语句,其中用到Left Join来筛选出只在左表中存在的数据,在更新十万行左右的数据时用时较久。当我尝试用Not Exist来进行筛选时,发现同样的数据量会更快一些。但是在我印象中,添加了索引之后的Left join理论上应该耗时更短才对。是不是存在有其他的因素是我没考虑到的。

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
206 个问题
Transact-SQL
Transact-SQL
ANSI SQL 语言的 Microsoft 扩展,包括过程编程、局部变量和各种支持函数。
31 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. LiHongMSFT-4306 30,751 信誉分
    2025-02-17T06:44:34.15+00:00

    你好,

    确实在某些情况下,使用 NOT EXISTS 可能比 LEFT JOIN 更高效,比如当子查询结果集较小时。

    另外,如果连接条件的字段选择性较差(即字段值重复度高),即使添加了索引,查询优化器可能仍选择不使用索引,导致性能未得到提升。

    因此,在实际应用中,建议根据具体情况进行性能测试,选择最适合的查询方式。


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。