Stream Aggregate Showplan 運算子
更新: 2006 年 7 月 17 日
Stream Aggregate 運算子會依據一或多個資料行將資料列分組,然後計算查詢所傳回的一或多個彙總運算式。這個運算子的輸出可稍後由查詢中的運算子參考,並/或傳回到用戶端。Stream Aggregate 運算子需要其群組內的輸入項目依資料行排列。如果資料因為前面的 Sort 運算子或因為已排序索引搜尋或掃描,而尚未排序,最佳化工具就會在這個運算子之前使用 Sort 運算子。在 SHOWPLAN_ALL 陳述式或 SQL Server Management Studio 的圖形執行計劃中,GROUP BY 述詞中的資料行會在 Argument 資料行中列出,而彙總運算式則在 DefinedValues 資料行中列出。
Stream Aggregate 是實體運算子。
圖形化執行計劃圖示
範例
下列範例會從 SalesPerson
資料表選取資料,再依據銷售區域 (Territory) 彙總 Bonus
和 SalesYTD
資料行的值。執行計劃的輸出顯示,查詢最佳化工具會使用 Stream Aggregate 運算子,依據 TerritoryID
資料行將 SalesPerson
資料表中的資料列分組,然後根據該群組計算 AVG(Bonus)
和 SUM(SalesYTD)
資料行的值。
USE AdventureWorks;
GO
SET NOCOUNT ON;
go
SET SHOWPLAN_ALL ON;
GO
SELECT TerritoryID,
AVG(Bonus) AS 'Average bonus',
SUM(SalesYTD) AS'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO
SET SHOWPLAN_ALL OFF;
Stream Aggregate 運算子的執行計劃輸出顯示在下面。
StmtText
------------------------------------------------------------------------------------------------
|--Stream Aggregate(GROUP BY:([AdventureWorks].[Sales].[SalesPerson].[TerritoryID]) )
DEFINE:([Expr1011]=Count(*),
[Expr1012]= SUM([AdventureWorks].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks].[Sales].[SalesPerson].[SalesYTD])))
Argument
-----------------------------------------------------------------------------------------------
GROUP BY:([AdventureWorks].[Sales].[SalesPerson].[TerritoryID]
DefinedValues
----------------------------------------------------------------------------------------------
[Expr1011]=Count(*),
[Expr1012]=SUM([AdventureWorks].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks].[Sales].[SalesPerson].[SalesYTD])
請參閱
工作
概念
邏輯與實體運算子參考
使用 Showplan SET 選項來顯示執行計劃 (Transact-SQL)
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 7 月 17 日 |
|