目前致力于提高一些查询的效率。查看查询计划后,我发现当top子句到位时,SQL没有执行并行性,将查询时间从1-2s增加到几分钟。
有问题的查询是使用带有各种连接和联合的视图,我正在寻找一个普遍的答案/理解为什么会发生这种情况 - 谷歌迄今为止未能成功。
由于
答案 0 :(得分:2)
你可能知道
通常,SQL Server在以下情况下并行处理查询:
但是,某些类型的语句不能并行处理,除非它们包含子句。 例如,即使相关查询符合条件,UPDATE,INSERT和DELETE通常也不会并行处理。
但是如果UPDATE或DELETE语句包含WHERE子句,或者INSERT语句包含SELECT子句,则可以并行执行WHERE和SELECT。在这些情况下,更改将连续应用于数据库。
要配置并行处理,只需执行以下操作:
您可以使用存储过程sp_configure配置并行处理。 Transact-SQL命令是:
exec sp_configure "max degree of parallelism", <integer value>
exec sp_configure "cost threshold for parallelism", <integer value>
答案 1 :(得分:0)
TOP会自动将查询置于串行(非并行模式)。这是一种限制,无法克服。尝试使用rand值= 1的等级作为TOP函数的可能替代...