小编Ber*_*fel的帖子

SQL Server 生成具有并行性和 TOP 语句的查询计划

我有两个简单的查询:

SELECT TOP(20) * FROM Clients ORDER BY City
Run Code Online (Sandbox Code Playgroud)
SELECT TOP(20) Id, Name, City FROM Clients ORDER BY City
Run Code Online (Sandbox Code Playgroud)

在第一种情况下我得到这样的结果

ID 姓名 城市 更多专栏
6 6人 无效的 ...
2 2人 无效的 ...
3 3号人 无效的 ...

在第二种情况下,我得到这样的结果 在第一种情况下,我得到这样的结果

ID 姓名 城市
2 2人 无效的
3 3号人 无效的
6 6人 无效的

请注意,顺序不同。当然,我理解,因为 City 对于这三个人来说是 NULL,所以不一定能保证唯一的顺序。

然而,在检查查询计划时,我注意到第一个查询使用了并行性 在此输入图像描述

第二个查询没有:

在此输入图像描述

在阅读有关并行查询处理的文档后,它特别提到某些构造会抑制并行性,例如 TOP 运算符。

除了并行性之外,唯一显着的区别是并行计划的 Top N Sort 节点的估计 I/O 成本为 16,而非并行查询计划的 Top N Sort 节点仅具有估计 I/O 成本成本0.01

所以我的问题是:为什么当我使用 TOP 运算符时它仍然会使用并行性,即使微软声明它应该抑制该机制?

sql-server parallelism execution-plan

5
推荐指数
1
解决办法
305
查看次数

标签 统计

execution-plan ×1

parallelism ×1

sql-server ×1