GROUP BY 提示

使用 GROUP BY 子句時,SQL Server 查詢優化器(QO)可以選擇不同型別的分組運算子:

  • HASH Aggregate 為分組條目建立雜湊對映
  • Stream Aggregate 適用於預先訂購的輸入

如果你知道什麼是最優的,你可以明確要求 QO 選擇一個或另一個聚合運算子。使用 OPTION(ORDER GROUP),如果輸入未排序,QO 將始終選擇 Stream 聚合併在 Stream 聚合前新增 Sort 運算子:

select OrderID, AVG(Quantity)
from Sales.OrderLines
group by OrderID
OPTION (ORDER GROUP) 

使用 OPTION(HASH GROUP),QO 將始終選擇 Hash 聚合:

select OrderID, AVG(Quantity)
from Sales.OrderLines
group by OrderID
OPTION (HASH GROUP)