首页 > 解决方案 > SQL Server 视图中的括号会影响性能吗?

问题描述

当我在 MS SQL Server 视图查询中的“OR”语句周围添加一组括号时,性能受到了极大的影响。

我遇到了一个视图,其中包含一组复杂的and/or子句。我认为添加括号后该语句会更易于阅读和维护。但是,在我添加括号后,视图性能下降了。

这让我相信括号肯定会影响视图的性能。但是我读过的所有内容都表明 SQL 中的括号不会影响性能。

我错过了什么?

标签: sqlsql-serverperformance

解决方案


这让我相信括号肯定会影响视图的性能。但是我读过的所有内容都表明 SQL 中的括号不会影响性能。

这取决于括号的应用位置。有时它适用于对逻辑没有影响,有时有效果,即按照以下示例,在示例 1 中,查询处理最终会对性能产生影响,但在示例 2 中,添加括号不会有任何影响

示例 1

ColumnA = 0 and ColmnB = 1 or ColumnB = 2
ColumnA = 0 and (ColmnB = 1 or ColumnB = 2)
ColumnA = 0 and ColmnB = 1 or (ColumnB = 2)

示例 2

ColumnA = 0 and ColmnB = 1 
ColumnA = 0 and (ColmnB = 1)
(ColumnA = 0) and ColmnB = 1

其中包含一组复杂的和/或子句

此外,我建议您也查看执行计划以便清楚地理解,您可以ctrl+m在执行查询之前在 SSMS(快捷方式)中启用它,并查看每次执行的差异:

  • 查询必须执行多少任务才能获得结果
  • 查询必须执行什么类型的任务
  • 每个任务中的estimated rows和是什么Actual number of rows
  • 索引使用发生变化,需要任何新索引等...

推荐阅读