大Sql的切分執行

2022-03-02 06:38:01 字數 1475 閱讀 6713

以前一直覺得sql應該減少傳遞次數,減少和資料庫的通訊,這樣可以提高效率。但現在發現,凡事都有個度的問題,由於業務需要一次性插入大概4000條資料,如果有併發操作,很容易就造成sql超時錯誤。於是就寫了乙個能夠拆分大sql執行的函式。

'執行大sql語句,傳入為stringbuilder以提高效率。

public

shared

sub executebigsql()

subexecutebigsql(

byref

sbsql 

assystem.text.stringbuilder, 

optional

byval

startword 

asstring="

insert into", 

optional

byval

groupnumber 

asinteger

=500

)dimstr

asstring

dimbgoon 

asboolean

=true

dimistart 

asinteger=0

diminext 

asinteger=0

str=

sbsql.tostring()

while

(bgoon)

istart 

=inext

fori 

asinteger=0

togroupnumber

inext 

=str

.indexof(startword, inext)

if(inext 

<0) 

then

bgoon 

=false

exit

forelse

inext 

+=startword.length

endif

next

if(inext 

>=0) 

then

inext 

-=startword.length

endif

if(inext 

>0) 

then

executesql(

str.substring(istart, inext 

-istart))

else

executesql(

str.substring(istart))

endif

endwhile

end sub

startword引數為每個單獨sql語句的開始特徵。這種情況一般都是insert語句。這裡要注意大小寫的問題,否則不會被拆開的,倒不會執行不了。

groupnumber為分組的大小。還沒上線測試,現在估計500句,經過實踐檢驗再調整。

單獨執行sql的部分executesql很簡單,詳情請參考:

積分運營的三大特徵

積分運營是商家的好助手,可以幫助商家實現高效精準的管理使用者,提高使用者對商家的粘度,助力商家實現引流鎖客,刺激更多的消費。積分運營是如何實現的呢?要從積分運營的特點為出發點,對積分運營進行分析。積分運營主要有三大特點 1 積分運營具有一定的靈活性 積分運營的積分一般並不是直接作為商品 給使用者,積...

積分運營是如何實現的呢?要從積分運營的三大特點開始

積分運營是商家的好助手,可以幫助商家實現高效精準的管理使用者,提高使用者對商家的粘度,助力商家實現引流鎖客,刺激更多的消費。積分運營是如何實現的呢?要從積分運營的特點為出發點,對積分運營進行分析。積分運營主要有三大特點 1 積分運營具有一定的靈活性 積分運營的積分一般並不是直接作為商品 給使用者,積...

sqlcmd命令執行大的SQL指令碼

這兩天從伺服器匯出乙個150多mb的指令碼檔案,匯入到我本地的sqlserver資料庫中時,直接開啟執行提示記憶體不足的錯誤,於是google搜尋發現微軟針對此類情況有不少命令列工具,其中有一款sqlcmd 實用工具,官方文件位址為 sqlcmd 實用工具 sqlcmd 實用工具是乙個命令列實用工具...