-- 建立測試 Index
CREATE INDEX IX_SalesOrderDetail_ProductID ON [Sales].[SalesOrderDetail] (ProductID)
INCLUDE(OrderQty)
-- 常使用的 Group By 彙總方式
SELECT
ProductID ,
SUM(OrderQty) AS OrderQty
FROM [Sales].[SalesOrderDetail]
WHERE ProductID = 707
GROUP BY ProductID
-- 視窗函數彙總方式
SELECT
DISTINCT
ProductID ,
SUM(OrderQty) OVER (PARTITION BY ProductID ORDER BY ProductID)
FROM [Sales].[SalesOrderDetail]
WHERE ProductID = 707
以上兩種方式可以獲得相同結果,但在效能上會有差異statistics io 比較
視窗函數執行計畫
視窗函數執行計畫
![[SQL] 利用視窗函數進行彙總統計](https://live.staticflickr.com/65535/51370604971_ea5254c570_z.jpg)
![[SQL] 利用視窗函數進行彙總統計-1](https://live.staticflickr.com/65535/51371650905_9d8664254d_z.jpg)
沒有留言:
張貼留言