以前一直覺得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 實用工具是乙個命令列實用工具...