[SQL ] 請問用迴圈與子查詢的效能問題
看板Database (資料庫)作者eggeggss (Suddenly I See)時間16年前 (2009/05/07 01:13)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/4 (看更多)
小弟用的是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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章