什么是执行计划中的Parallelism(Distribute Streams)

时间:2015-07-10 12:37:03

标签: sql sql-server sql-execution-plan

Parallelism(Distribute Streams)中的Execution plan操作是什么。为什么它会增加上一次操作的行数。

查询:

SELECT TOP 5000 MM.MEMBER_ID,
                MM.MEMBER_NO,
                MM.MEMBER_NAME,
                MM.TRADE_CLASS,
                MT.DESCRIPTION,
                MS.DESCRIPTION,
                MAI.ADDRESS_1,
                MAI.ADDRESS_2,
                MAI.CITY,
                MAI.STATE,
                MAI.ZIP
FROM   MEMBER_MASTER MM
       INNER JOIN MEMBER_TYPE MT
               ON MT.CODE = MM.MEMBER_TYPE
       INNER JOIN MEMBER_STATUS MS
               ON MS.CODE = MM.MEMBER_STATUS
       INNER JOIN MEMBER_ADDRESS_INFO MAI
               ON MM.MEMBER_ID = MAI.MEMBER_ID
WHERE  MAI.PRIMARY_ADDRESS_FLAG = 'YES'

执行计划:

enter image description here

根据上述执行计划,您可以清楚地看到行数从 39,771 增加到 1,272,672 。为什么会这样?

1 个答案:

答案 0 :(得分:4)

系统已经决定它可以从并行执行某些处理中受益。在这种情况下,它显然决定让32个独立的线程与这组行一起工作(1272672 = 39771 * 32)。它不应该成为一个值得关注的问题 - 通常 - 并且重复"稍后的if {fullmain.initres} > 0 then {fullmain.initres} else 0.00 操作将删除行。