Update table Data without using while loop in sql server 2005計算運行總計運行在SQL Server 2005
我問這個問題和細節,更好的性能....
在SQL我有一個表中的數據如下
id type amount
1 type1 2000
2 type1 1000
3 type2 500
4 type3 3000
5 type1 2000
6 type2 500
7 type3 5000
8 type1 1000
和我想獲得像下面這樣的語句中的數據
id type amount current
1 type1 2000 2000
2 type1 1000 1000
3 type2 500 500
4 type3 3000 3000
5 type1 2000 3000
6 type2 -500 0
7 type3 5000 2000
8 type1 -1000 4000
a ND等 這意味着每種類型必須基於量型 其需要被不具有其目前的總金額有while循環,因爲它需要很長的時間來執行
for eg:
in type 1
ID Amount current
1 2000-add 2000
2 1000-sub 1000
3 2000-add 3000
4 1000-add 4000
,答案是,
SELECT id,
type,
amount,
(SELECT sum(amount)
FROM mytable t1
WHERE t1.type = t2.type
AND t1.id <= t2.id) currenttotal
FROM mytable t2
現在的問題是假設的例子表有8000(它會增加),如
id type amount
1 type1 2000
2 type1 1000
3 type2 500
4 type3 3000
5 type1 2000
6 type2 500
7 type3 5000
8 type1 1000
及其採取012的數據記錄執行select語句的時間是基於這個答案(有2個答案,兩者有相同的執行時間)針對上述問題編寫的。如何減少這個執行時間?
*如何減少這個執行時間?*你有索引來支持查詢嗎?我假設你至少看過執行計劃。 –
Downvoted請填寫詳細信息。 – Namphibian
該查詢的適當索引是'type,id INCLUDE(amount)',儘管如果每個'type'性能有很多行,那麼這個索引仍然會很糟糕。 –