前言
之前系列中在查詢計(jì)劃中一直出現(xiàn)Stream Aggregate,當(dāng)時(shí)也只是做了基本了解,對于查詢計(jì)劃中出現(xiàn)的操作,我們都需要去詳細(xì)研究下,只有這樣才能對查詢計(jì)劃執(zhí)行的每一步操作都了如指掌,所以才有了本文的出現(xiàn),簡短的內(nèi)容,深入的理解,Always to review the basics。
Stream Aggregate
Stream Aggregate通過單列或者多列來對行進(jìn)行分組并且對指定的查詢來計(jì)算聚合表達(dá)式。最常見的聚合類型如SUM、COUNT、SUM、AVG、MIN、MAX,當(dāng)我們執(zhí)行這些聚合函數(shù)時(shí)在查詢計(jì)劃中就會出現(xiàn)Stream Aggregate,Stream Aggregate是非??斓?,因?yàn)樗枰谳斎霑r(shí)通過在GROUP BY中指定的列進(jìn)行排序。如果聚合中的數(shù)據(jù)沒有進(jìn)行排序此時(shí)會通過Sort進(jìn)行預(yù)排序或者使用索引查找或者索引掃描來提前預(yù)排序數(shù)據(jù)。之前我們討論過出現(xiàn)Stream Aggregate有三種方式分別為:聚合函數(shù)聚合,分組聚合,DISTINCT聚合,實(shí)際上只有兩種,DISTINCT內(nèi)部就用到了分組,這里我們將Stream Aggregate分為兩種類型,一種是標(biāo)量聚合,另外一種則是分組聚合。我們舉一個(gè)標(biāo)量聚合的例子,也就是返回單值聚合。
標(biāo)值聚合
USE TSQL2012 GO SELECT COUNT(*) FROM Sales.Orders
下面我們再來分組聚合的例子
USE TSQL2012 GO SELECT custid FROM Sales.Orders GROUP BY custid
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式