下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、分享高性能批量插入和批量刪除sql語句寫法一,技術(shù)水平總能在扯皮和吹毛求疵中得到提高如果從來不求疵,可能就不會知道/st廠!=) 不如/f(str != str/ng.Empty)高效、批量插入和刪除的sql語句是要那樣寫才執(zhí)彳亍最快、接口和 抽象類的區(qū)別不僅是語言層面、原來權(quán)限管理是要這樣設(shè)計的、某個類那樣設(shè)計職責(zé)才更單一更易 于擴展本來前兩篇文章是學(xué)習(xí)cnblogs編輯控件用的,看到跟貼的朋友詢問批量插入和批量刪除的問 題,決定整理成文和大家分享。我們這里討論的只是普通sql語句如何寫更高效,不考慮特殊的用文件中轉(zhuǎn)等導(dǎo)入方式,畢竟 在代碼中調(diào)用sql語句或存儲過程才更方便。批量刪除很簡單,
2、大家可能都用過:DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) -sql2005 下運行通過當(dāng)用戶在界面上不連續(xù)的選擇多項進行刪除時,該語句比循環(huán)調(diào)用多次刪除或多條delete語 句中間加分號一次調(diào)用等方法都高效的多。本文重點講述的是批量插入的寫法:sql寫法:INSERT INTO TestTable SELECT 1, abc UNION SELECT 2, bcd UNIONSELECT 3, cde -TestTable表沒有主鍵,ID不是主鍵oracle 寫法:INSERT INTO TestTable SELECT 1, abc F
3、rom daul UNION SELECT 2, bcd From daul-TestTable表沒有主鍵,ID不是主鍵曾經(jīng)測試過,這種寫法插入1000條數(shù)據(jù)比循環(huán)調(diào)用1000次insert或1000條insert語句 簡單疊加一次調(diào)用要高效得多,大概快20多倍(調(diào)試狀態(tài)不是太準)。其實很簡單,就用了個union (union all也可以),但當(dāng)時得出測試結(jié)果時還是很驚喜的。要得出這個結(jié)果需要兩個條件:1、表不能有主鍵或者主鍵是數(shù)據(jù)庫默認的(sql用自動遞增列,oracle用序列)2、組合sql語句時只能直接用字符串連接,不能用參數(shù)化sql語句的寫法(就是在組合的sql中 用parm做占位符
4、,再給Command對象添加Parameter)以上兩條任意一條不滿足,效率的提高都不明顯。另外,sql語句的最大長度有限制,組合幾千條數(shù)據(jù)寫成一條insert語句,可能會超過上限,所 以如果有5000條數(shù)據(jù),可以一次insert 1000條,分5次寫完(不一定一次1000條最合適,有興 趣的朋友可以研究)。聲明:看了幾位朋友的評論后發(fā)現(xiàn)自己沒有敘述清楚上面的兩個條件并不是說這樣做就好,而是說當(dāng)應(yīng)用場景滿足這兩個條件時才適合用union 的寫法當(dāng)時用這種寫法時,是為了解決一個WinForm程序批量導(dǎo)入手機號碼的問題,程序給自己人 用,excel文件也是可靠的,不需要考慮sql攻擊。還有一些場景
5、是大量數(shù)據(jù)來源于通過Gprs網(wǎng)絡(luò) 連接的專用終端,總之?dāng)?shù)據(jù)來源是可靠的,還有就是數(shù)據(jù)量很大但不可能巨大。PS:常常遇到一些小技巧或者值得注意的小細節(jié),沒有記下來,要等下次再遇到時才想起來。現(xiàn)在 下決心要養(yǎng)成好的工作習(xí)慣,留此文為證。能夠整理成文的要寫在項目組開發(fā)規(guī)范中,其它的至少要記錄下來。二,使用mybatis將數(shù)據(jù)批量插入到oracle中,在映射文件中怎么寫???mybaits 版本,3.1.02.insert into b_agent_info(id,hkgs,userName,custName,office,remark) values(#item.id,#item.hkgs,#item
6、.userName,#item.custName,#item.office,#item.remark)這個是參考網(wǎng)上的寫法寫的不過不支持向oracle中批量插入!不知道有誰遇到過嗎?或者給出解決方法,該怎么解決?.找到一種寫法分享:insert intoxxxxtable(hkgs,hkgsjsda,office,asdf,ddd,ffff,supfullName,classtype,agent_type,rem ark)select #item.hkgs,jdbcType= VARCHAR,#item.hkgsjsda,jdbcType= VARCHAR,#item.office,jdbcType=VARCHAR,#item.asdf,jdbcType= VARCHAR,#item.ddd,jdbcType= VARCHAR,#item.ffff,jdbcType= VARCHAR,#item.supfullName,jdbcType=VARCHAR,0, 0,#item.remark,jdbcType= VARCHAR from dual.可以考慮用union all來實現(xiàn)批量插入。例如:insert into XX_TABLE(XX,XX,XX)select xx,xx,xx unio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商業(yè)用地租賃權(quán)轉(zhuǎn)授權(quán)合同
- 2024年學(xué)校服裝供應(yīng)合同
- 2024年度工程變更與居間服務(wù)合同
- 我們身體課件教學(xué)課件
- 2024北京市車指標(biāo)租賃期間保險服務(wù)合同
- 2024年大型活動策劃與執(zhí)行服務(wù)合同
- 2024的保安服務(wù)委托合同范文
- 2024年度衛(wèi)星通信服務(wù)與租賃合同
- 2024年建筑工程水電施工合同
- 2024年建筑工程施工總包合同精粹
- GB/T 42455.2-2024智慧城市建筑及居住區(qū)第2部分:智慧社區(qū)評價
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識
- YYT 0653-2017 血液分析儀行業(yè)標(biāo)準
- 刑事受害人授權(quán)委托書范本
- 《文明上網(wǎng)健康成長》的主題班會
- 框架結(jié)構(gòu)冬季施工方案
- 柴油購銷合同
- MD380總體技術(shù)方案重點講義
- 天車道軌施工方案
- 傳染病轉(zhuǎn)診單
- 手術(shù)室各級護士崗位任職資格及職責(zé)
評論
0/150
提交評論