分享高性能批量插入和批量刪除sql語句寫法

分享高性能批量插入和批量刪除sql語句寫法

ID:34744561

大小:75.18 KB

頁數(shù):4頁

時間:2019-03-10

分享高性能批量插入和批量刪除sql語句寫法_第1頁
分享高性能批量插入和批量刪除sql語句寫法_第2頁
分享高性能批量插入和批量刪除sql語句寫法_第3頁
分享高性能批量插入和批量刪除sql語句寫法_第4頁
資源描述:

《分享高性能批量插入和批量刪除sql語句寫法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、分享高性能批量插入和批量刪除sql語句寫法一,技術(shù)水平總能在扯皮和吹毛求疵中得到提高。如果從來不“求疵”,可能就不會知道if(str!="")不如if(str!=string.Empty)高效、批量插入和刪除的sql語句是要那樣寫才執(zhí)行最快、接口和抽象類的區(qū)別不僅是語言層面、原來權(quán)限管理是要這樣設計的、某個類那樣設計職責才更單一更易于擴展……???本來前兩篇文章是學習cnblogs編輯控件用的,看到跟貼的朋友詢問批量插入和批量刪除的問題,決定整理成文和大家分享。???我們這里討論的只是普通sql語句如何寫更高效,不考慮特殊的用文件中轉(zhuǎn)等導入方式,畢竟在代碼中調(diào)用sql語句或存儲過

2、程才更方便。???批量刪除很簡單,大家可能都用過:???DELETEFROMTestTableWHERE?IDIN(1,3,54,68)?--sql2005下運行通過???當用戶在界面上不連續(xù)的選擇多項進行刪除時,該語句比循環(huán)調(diào)用多次刪除或多條delete語句中間加分號一次調(diào)用等方法都高效的多。??????本文重點講述的是批量插入的寫法:????sql寫法:???INSERTINTOTestTableSELECT?1,'abc'?UNIONSELECT?2,'bcd'?UNIONSELECT?3,'cde'??--TestTable表沒有主鍵,ID不是主鍵???oracle寫法:

3、???INSERTINTOTestTableSELECT1,'abc'FromdaulUNIONSELECT?2,'bcd'Fromdaul??--TestTable表沒有主鍵,ID不是主鍵???曾經(jīng)測試過,這種寫法插入1000條數(shù)據(jù)比循環(huán)調(diào)用1000次insert或1000條insert語句簡單疊加一次調(diào)用要高效得多,大概快20多倍(調(diào)試狀態(tài)不是太準)。其實很簡單,就用了個union(unionall也可以),但當時得出測試結(jié)果時還是很驚喜的。???要得出這個結(jié)果需要兩個條件:???1、表不能有主鍵或者主鍵是數(shù)據(jù)庫默認的(sql用自動遞增列,oracle用序列)???2、組合s

4、ql語句時只能直接用字符串連接,不能用參數(shù)化sql語句的寫法(就是在組合的sql中用@parm做占位符,再給Command對象添加Parameter)4???以上兩條任意一條不滿足,效率的提高都不明顯。???另外,sql語句的最大長度有限制,組合幾千條數(shù)據(jù)寫成一條insert語句,可能會超過上限,所以如果有5000條數(shù)據(jù),可以一次insert1000條,分5次寫完(不一定一次1000條最合適,有興趣的朋友可以研究)。?聲明:看了幾位朋友的評論后發(fā)現(xiàn)自己沒有敘述清楚????上面的兩個條件并不是說這樣做就好,而是說當應用場景滿足這兩個條件時才適合用union的寫法?????當時用這種

5、寫法時,是為了解決一個WinForm程序批量導入手機號碼的問題,程序給自己人用,excel文件也是可靠的,不需要考慮sql攻擊。還有一些場景是大量數(shù)據(jù)來源于通過Gprs網(wǎng)絡連接的專用終端,總之數(shù)據(jù)來源是可靠的,還有就是數(shù)據(jù)量很大但不可能巨大。??PS:常常遇到一些小技巧或者值得注意的小細節(jié),沒有記下來,要等下次再遇到時才想起來?,F(xiàn)在下決心要養(yǎng)成好的工作習慣,留此文為證。?????能夠整理成文的要寫在項目組開發(fā)規(guī)范中,其它的至少要記錄下來。4二,使用mybatis將數(shù)據(jù)批量插入到oracle中,在映射文件中怎么寫???1.mybaits版本,3.1.02.1.?

6、2.??3.????insertintob_agent_info4.????(id,hkgs,userName,custName,office,remark)values5.????7.??????(#{item.id},#{item.hkgs},#{item.userName},#{item.custName},#{item.off

7、ice},#{item.remark})8.????9.??這個是參考網(wǎng)上的寫法寫的不過不支持向oracle中批量插入!不知道有誰遇到過嗎?或者給出解決方法,該怎么解決?·找到 一種 寫法 分享?。?insertid="batchInsertB2B"parameterType="ArrayList">insertintoxxxxtable(hkgs,hkgsjsda,office,asdf,ddd,ffff,supfullName,class

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。