2016-12-30 98 views
2

哪些SQL函數完全抑制SQL Server中的並行性?我問,因爲我試圖運行下面的查詢: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://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

+0

並行性對您而言意味着什麼?您如何注意代碼並不平行運行? –

+0

逐個評論功能並查看哪些排除了並行性。 –

+0

@mikemorris - 添加執行計劃圖像。沒有「平行」節點。 – dashnick

回答

1

的計劃不是並行執行的原因,從馬丁·史密斯的幫助,是

NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" 

它可以是在執行計劃XML中找到。