小编iPa*_*h ツ的帖子

为什么 Inner Join 引入了隐藏排序?

考虑以下示例:

DECLARE @suppliedNumber MONEY
SET @suppliedNumber = 245656.00

SELECT 
    ah.FirstName, 
    ah.LastName
FROM 
    AccountHolders AS ah
JOIN 
    [dbo].[Accounts] AS a
ON 
    ah.Id = a.AccountHolderId
GROUP BY 
    ah.FirstName, ah.LastName
HAVING SUM(a.Balance) > @suppliedNumber
Run Code Online (Sandbox Code Playgroud)

如您所见,查询中没有任何排序。但是查看执行计划,我看到了隐式排序:

SSMS 执行计划

为什么会这样?这背后的技术原因是什么?

我在 Windows NT 6.3 (Build) 上使用 Microsoft SQL Server 2014 (RTM-CU14) (KB3158271) - 12.0.2569.0 (X64) May 27 2016 15:06:08 版权所有 (c) Microsoft Corporation Express Edition(64 位) 14393:)

join sql-server sorting sql-server-2014

6
推荐指数
2
解决办法
4175
查看次数

标签 统计

join ×1

sorting ×1

sql-server ×1

sql-server-2014 ×1