共用方式為


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) 彙總 BonusSalesYTD 資料行的值。執行計劃的輸出顯示,查詢最佳化工具會使用 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)

其他資源

彙總函數 (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

新增內容:
  • 新增「範例」一節。
更新的內容:
  • 釐清 Stream Aggregate 運算子的描述。