Stream Aggregate Showplan 运算符

更新日期: 2006 年 7 月 17 日

Stream Aggregate 运算符按一列或多列对行分组,然后计算查询返回的一个或多个聚合表达式。此运算符的输出可供查询中的后续运算符引用和/或返回到客户端。Stream Aggregate 运算符要求输入在组中按列进行排序。如果由于前面的 Sort 运算符或已排序的索引查找或扫描导致数据尚未排序,优化器将在此运算符前面使用一个 Sort 运算符。在 SHOWPLAN_ALL 语句或 SQL Server Management Studio 的图形执行计划中,GROUP BY 谓词中的列会列在 Argument 列中,而聚合表达式列在 DefinedValues 列中。

Stream Aggregate 是一个物理运算符。

Stream Aggregate 运算符图标图形执行计划图标

示例

下面的示例从 SalesPerson 表中选择数据,并按区域聚合 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 运算符的说明。