【发布时间】:2012-10-01 01:41:09
【问题描述】:
为什么,当打开如下查询时:
WHERE (statement1) AND ((statement2) OR (statement3))
SSMS 查询设计器是否将其重构为以下语法:
WHERE (statement1) AND (statement2) OR
(statement1) AND (statement3)
我认为这与 SQL 服务器如何解析查询有关,在 ors 之前运行 ands?
是否有关于如何以最佳语句顺序进行最终优化的一般规则?
运行我自己的测试后,第二个查询将处理时间缩短了 0.5 毫秒。我知道它很小,但会随着查询的复杂性而增加(仍然几乎没有区别),我对 SQL Server 的工作原理很感兴趣。
【问题讨论】:
-
你是如何运行你的计时测试的?您是否多次运行查询?您是否运行了查询 1,紧接着是查询 2?如果是这样,您是否也以相反的顺序尝试它们?我没想到它们之间会有任何区别。
-
我进行了更多测试,但我运行的次数越多,它们似乎就越没有结论。
-
使用
SET STATISTICS IO ON和SET STATISTICS TIME ON来衡量SQL执行。不要使用经过的时间,那是没有用的。 -
一旦 SQL Server 将数据缓存在内存中,后续查询可能会显得更快。
标签: sql sql-server tsql optimization ssms