sql執行萬條update語句優化

2022-05-09 22:00:20 字數 1769 閱讀 9013

幾個月沒有更新筆記了,最近遇到乙個坑爹的問題,順道記錄一下。。

需求是這樣的:一次性修改上萬條資料庫。

專案是用mvc+linq的。

本來想著用 直接where()

1var latentcustomerlist =this.findall().where(m => arrid.contains(m.customerid.tostring())).tolist();

這樣子執行,意料之中的就是出錯了,出啥錯,自己試了就知道了。哈哈

想來就只有直接運算元據庫了。第一次的想法,直接就是for拼接語句,拼是拼了。12

3456

for(inti = 0; i < obalist.count; i++)

' ;  ", arrid[i]);

}

可是執行起來總共花費了7秒。第二次花費4.5秒,第三次5秒。

資料庫都是爭分奪毫秒。這樣拼了一萬多條的語句還真不是辦法。除錯進去也許你也會崩潰。。。就想著能不能快,再快。就想到了in

於是就改成了下面的方法。12

3456

78910

1112

1314

15for(inti =0; i < obalist.count; i++)

) ;  ", ids);

ids ="'"+ arrid[i] +"',";

}

else

}

看看總共的執行時間吧。。

也只能是這樣的速度了...

說說最後的思想吧,其實就是減少執行語句數量的問題,把原本需要執行12223條的語句,減少了50倍,也就是245條。效率不言而喻了。(實際使用需要結合資料庫索引以及in的問題。)

做到這,想到excel匯入資料庫的時候是不是也會有另外一種優化方法。。。

菜鳥求教,請勘誤。

SQL語句 UPDATE語句

update students set sname abcd gender 1 where sid 1 update students,students2 set students.sname students2.sname,students.gender students2.gender wher...

sql 語句 迴圈插入100萬條資料到某個表中

use m3 2011 declare i bigint 1 declare j int 1 declare k smallint 1 begin transaction begin try while i 1000000 begin insert into m3 2011 dbo fa clien...

sqlserver 如何瞬間執行上萬條資料

核心的內容是 使用自定義表型別 第一步 建立儲存過程p t1declareinfo upload new 引數 t1declareinfo uploadpnsn param 型別 t1declareinfo uploadpnsn t1agentid param 型別 varchar 50 說明 引數...