Оператор Stream Aggregate инструкции Showplan
Изменения: 17 июля 2006 г.
Оператор Stream Aggregate группирует строки в один или несколько столбцов и вычисляет одно или несколько статистических выражений, возвращенных запросом. Выход этого оператора может быть использован последующими операторами запроса, возвращен клиенту или то и другое. Оператору Stream Aggregate необходимы входные данные, упорядоченные по группируемым столбцам. Оптимизатор использует перед этим оператором оператор Sort, если данные не были отсортированы оператором Sort или используется упорядоченный поиск или просмотр в индексе. В инструкции SHOWPLAN_ALL или графическом плане выполнения в среде SQL Server Management Studio столбцы в предикате GROUP BY перечисляются в столбце Аргумент, а статистические выражения — в столбце Определенные значения.
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 г. |
|