다음을 통해 공유


Stream Aggregate 실행 계획 연산자

Stream Aggregate 연산자는 하나 이상의 열로 행을 그룹화한 후 쿼리가 반환한 하나 이상의 집계 식을 계산합니다. 이 연산자의 출력은 쿼리에서 이후 연산자에 의해 참조되거나 클라이언트에 반환되거나 둘 다 수행될 수 있습니다. Stream Aggregate 연산자를 사용하려면 입력이 그룹 내의 열을 기준으로 정렬되어야 합니다. 최적화 프로그램에서는 이전 Sort 연산자로 인해 또는 정렬된 Index Seek이나 Index Scan으로 인해 데이터가 아직 정렬되지 않은 경우 이 연산자 이전의 Sort 연산자를 사용합니다. SHOWPLAN_ALL 문 또는 SQL Server Management Studio의 그래픽 실행 계획에서는 GROUP BY 조건자에 있는 열이 Argument 열에 나열되고 집계 식이 DefinedValues 열에 나열됩니다.

Stream Aggregate는 물리 연산자입니다.

Stream aggregate 연산자 아이콘그래픽 실행 계획 아이콘

다음 예에서는 SalesPerson 테이블에서 데이터를 선택하고 지역별로 Bonus 및 SalesYTD 열에 대한 값을 집계합니다. 실행 계획의 출력은 쿼리 최적화 프로그램이 Stream Aggregate 연산자를 사용하여 SalesPerson 테이블의 행을 TerritoryID 열로 그룹화한 다음 해당 그룹화에 기반한 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])