小弟用的是MSSQL,希望做出累計的效果
假設需要累計的資料高達十萬筆
我的原始資料假設如下:
id part_no qty
1 A 1
2 A 2
3 A 3
4 B 2
5 B 1
.
.
.
結果要變成
id part_no qty qty_sum(根據part_no的累計欄位)
1 A 1 1
2 A 2 3
3 A 3 6
4 B 2 2
5 B 1 3
.
.
.
於是我利用以下的sub query 可以達成達成目的
select part_no,qty_sum=(select sum(qty) from [某table] where id<a.id
and part_no=a.part_no)
from 某table a
因為之前的前輩在這段的寫法是利用回圈計算,(須繞十萬次,約一個小時),
小弟用profiler
發現整隻預儲程序的bottleneck就是這段計算
希望能夠改寫前輩的寫法
想請教 sub query與利用回圈計算累加何者效率會比較高
小弟有稍微測試兩者的效能,似乎看不出何者較高(因為處於多工環境,
server分配的資源不一定均等,所以無法做banch mark)
感激不盡
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.97.54
※ 編輯: eggeggss 來自: 118.169.97.54 (05/07 01:16)
※ 編輯: eggeggss 來自: 118.169.97.54 (05/07 01:19)