gpt4 book ai didi

sql-server - SQL Server 是否会短路 IF 语句?

转载 作者:行者123 更新时间:2023-12-02 07:29:31 25 4
gpt4 key购买 nike

我正在优化一些频繁使用的存储过程,并遇到了一个场景,该场景提出了一个我找不到任何答案的问题:在存储过程中评估 TSQL 时,SQL Server 是否会短路 IF 语句?

例如,假设存储过程的代码类似于:

IF @condition1 = 1
OR EXISTS(SELECT 1 FROM table1 WHERE column1 = @value1)
...

在这种情况下,SQL Server 是否会短路计算,以便当前面的子句计算为 true 时永远不会执行 EXISTS 语句?

如果它从来没有或只是有时会出现,那么我们就需要进行一些重写。

最佳答案

即使它看起来有效,也不应该依赖它。 CASE声明是文档中唯一声明为短路的内容,但即使如此也不是(或至少不是)总是这种情况(嘻嘻)。这是一个bug幸运的是,该问题在 SQL Server 2012 中已得到修复(请参阅评论)。

除了 @Martin 就该问题发表的评论中的评论链接(当然,这是一个有趣的洞)之外,您还应该查看这篇文章:

Understanding T-SQL Expression Short-Circuiting

以及与该文章相关的讨论论坛。

关于sql-server - SQL Server 是否会短路 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475188/

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