gpt4 book ai didi

sql - 为什么 T-SQL where 语句的顺序很重要?

转载 作者:行者123 更新时间:2023-12-02 22:38:45 25 4
gpt4 key购买 nike

为什么,当打开如下查询时:

WHERE (语句1) AND ((语句2) OR (语句3))

SSMS 查询设计器是否将其重构为以下语法:

WHERE(语句 1)AND(语句 2)OR
(语句1)AND(语句3)

我认为这与 SQL Server 解析查询的方式有关,在 ors 之前运行 ands?

是否有关于如何确定最佳语句顺序以实现最终优化的一般规则?

运行我自己的测试后,第二个查询将处理时间缩短了 0.5 毫秒。我知道它很小,但会随着查询的复杂性而增加(仍然几乎没有区别),而且我对 SQL Server 的工作原理很感兴趣。

最佳答案

与实际的SQL执行无关。与您所知道的大多数语言不同,T-SQL does not have boolean operator short circuit 1 和“在 ors 之前运行 ands”之类的概念毫无意义,评估顺序完全由查询优化器决策驱动,最终可能与您编写的或您期望的完全不同。

您看到的表达式重写似乎完全是 SSMS 查询设计的内部解析器的产物。

1 或者更好地说, bool 短路不能由表达式的编写方式强制确定。实际运行时运算符短路确实会发生,只是您不知道是否以及何时会发生。

关于sql - 为什么 T-SQL where 语句的顺序很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12821816/

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