gpt4 book ai didi

LEFT OUTER JOIN 与 NOT EXISTS 的 SQL 性能

转载 作者:行者123 更新时间:2023-12-01 18:10:21 27 4
gpt4 key购买 nike

如果我想在表 A 中查找一组条目,但不在表 B 中查找,我可以使用 LEFT OUTER JOIN 或 NOT EXISTS。我听说 SQL Server 面向 ANSI,在某些情况下 LEFT OUTER JOIN 比 NOT EXISTS 更有效。在这种情况下 ANSI JOIN 会表现得更好吗?在 SQL Server 上,连接运算符是否比一般的 NOT EXISTS 更有效?

最佳答案

Joe 的链接是一个很好的起点。 Quassnoi covers this too.

一般来说,如果您的字段已正确索引,或者您希望过滤掉更多记录(即有很多行EXIST 在子查询中)NOT EXISTS 会执行得更好。

EXISTSNOT EXISTS 都短路 - 一旦记录符合条件,它就会被包含或过滤掉,优化器将继续处理下一条记录。

LEFT JOIN 将连接ALL RECORDS,无论它们是否匹配,然后过滤掉所有不匹配的记录。如果您的表很大和/或您有多个 JOIN 标准,这可能会占用大量资源。

我通常会尽可能尝试使用 NOT EXISTSEXISTS。对于 SQL Server,INNOT IN 在语义上是等效的,并且可能更容易编写。 这些是 SQL Server 中唯一能保证短路的运算符。

关于LEFT OUTER JOIN 与 NOT EXISTS 的 SQL 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com