Оператор Stream Aggregate инструкции Showplan

Изменения: 17 июля 2006 г.

Оператор Stream Aggregate группирует строки в один или несколько столбцов и вычисляет одно или несколько статистических выражений, возвращенных запросом. Выход этого оператора может быть использован последующими операторами запроса, возвращен клиенту или то и другое. Оператору Stream Aggregate необходимы входные данные, упорядоченные по группируемым столбцам. Оптимизатор использует перед этим оператором оператор Sort, если данные не были отсортированы оператором Sort или используется упорядоченный поиск или просмотр в индексе. В инструкции SHOWPLAN_ALL или графическом плане выполнения в среде SQL Server Management Studio столбцы в предикате GROUP BY перечисляются в столбце Аргумент, а статистические выражения — в столбце Определенные значения.

Stream Aggregate является физическим оператором.

Значок оператора Stream aggregateЗначок графического плана выполнения

Примеры

В следующем примере производится выборка данных из таблицы SalesPerson и статистическая обработка значений столбцов Bonus и SalesYTD по территориальному признаку. Вывод плана выполнения показывает, что, для того чтобы сгруппировать строки в таблице SalesPerson в столбец TerritoryID, оптимизатор запросов использует оператор Stream Aggregate, а затем вычисляет значения для столбцов 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

Журнал изменений

Версия Журнал

17 июля 2006 г.

Новое содержимое
  • Добавлен раздел «Примеры».
Обновленное содержимое
  • Разъяснено описание оператора Stream Aggregate.