Stream Aggregate 실행 계획 연산자
Stream Aggregate 연산자는 하나 이상의 열로 행을 그룹화한 후 쿼리가 반환한 하나 이상의 집계 식을 계산합니다. 이 연산자의 출력은 쿼리에서 이후 연산자에 의해 참조되거나 클라이언트에 반환되거나 둘 다 수행될 수 있습니다. Stream Aggregate 연산자를 사용하려면 입력이 그룹 내의 열을 기준으로 정렬되어야 합니다. 최적화 프로그램은 앞서 Sort 연산자 또는 정렬된 Index Seek나 Index Scan을 통해 데이터를 아직 정렬하지 않은 경우 이 연산자보다 먼저 Sort 연산자를 사용합니다. SHOWPLAN_ALL 문 또는 SQL Server Management Studio의 그래픽 실행 계획에서는 GROUP BY 조건자에 있는 열이 Argument 열에 나열되고 집계 식이 Defined Values 열에 나열됩니다.
Stream Aggregate는 물리 연산자입니다.
그래픽 실행 계획 아이콘
예
다음 예에서는 SalesPerson 테이블에서 데이터를 선택하고 지역별로 Bonus 및 SalesYTD 열에 대한 값을 집계합니다. 실행 계획의 출력은 쿼리 최적화 프로그램이 Stream Aggregate 연산자를 사용하여 SalesPerson 테이블의 행을 TerritoryID 열로 그룹화한 다음 해당 그룹화를 기반으로 AVG(Bonus) 및 SUM(SalesYTD) 열에 대한 값을 계산하는 것을 보여 줍니다.
USE AdventureWorks2008R2;
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:([AdventureWorks2008R2].[Sales].[SalesPerson].[TerritoryID]) )
DEFINE:([Expr1011]=Count(*),
[Expr1012]= SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[SalesYTD])))
Argument
-----------------------------------------------------------------------------------------------
GROUP BY:([AdventureWorks2008R2].[Sales].[SalesPerson].[TerritoryID]
DefinedValues
----------------------------------------------------------------------------------------------
[Expr1011]=Count(*),
[Expr1012]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[SalesYTD])