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)