SQL Server代码不并行执行

时间:2016-12-30 18:40:04

标签: sql sql-server parallel-processing

哪些SQL函数正好抑制了SQL Server中的并行性?我问,因为我试图运行以下查询:

SELECT  SUM(_dt7) AS _dt7, SUM(_dt8) AS _dt8, SUM(_FPRecCount) as _FPRecCount, _FPBucket 
FROM (
    SELECT _dt7,_dt8, 1 as _FPRecCount, (CAST(ABS(CHECKSUM(_ID)) as INT) % 5)+1 AS _FPBucket 
    FROM [Example Database].[dbo].[_FP_Longer Test Data (Long)] 
    WHERE (1=1 AND (3=3 ) AND 2=2)
    ) AS q 
GROUP BY _FPBucket

但是执行计划似乎永远不想并行执行,总是串行。

我想知道CAST()ABS()CHECKSUM()函数是否会阻止它。

本文

http://web.archive.org/web/20180404164406/http://sqlblog.com/blogs/paul_white/archive/2011/12/23/forcing-a-parallel-query-execution-plan.aspx

以及它提到的文件

http://blogs.msdn.com/b/craigfr/archive/2007/04/17/parallel-query-execution-presentation.aspx

两者都提到“随机内部函数”会抑制并行性这一事实,但它没有给出整个列表。

以下是执行计划的内容:

query execution plan

1 个答案:

答案 0 :(得分:1)

该计划并非由马丁史密斯的协助并行执行的原因是

NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition"

可以在执行计划XML中找到。