考虑下面的查询。唯一的区别是返回 1000 与 2000 行。
SELECT TOP 1000 lwa.Message INTO #foo
FROM dbo.LogWidgetsAPI lwa (NOLOCK)
ORDER BY lwa.TimeStamp
对比
SELECT TOP 2000 lwa.Message INTO #foo
FROM dbo.LogWidgetsAPI lwa (NOLOCK)
ORDER BY lwa.TimeStamp
但是,1000 行会在一秒钟内返回,而 2000 行的查询需要更长的时间。
第一个查询的查询计划相当简单:
仅使用 1k 行会更强制并行化吗?
PS 该表包含超过 600 万条记录,并索引了 TimeStamp 列。
根据其他评论,听起来并行的成本阈值太低,并且即使这样做/收集流的过程使您的过程需要更长的时间,查询也会并行。
尝试将其设置为 50,或尝试不同的数字。
另外,值得一读:https ://www.brentozar.com/archive/2017/03/why-cost-threshold-for-parallelism-shouldnt-be-set-to-5/