反覆執行單條插入語句
xml拼接sql
批處理執行
先說結論:少量插入請使用反覆插入單條資料,方便。數量較多請使用批處理方式。(可以考慮以有需求的插入資料量20條左右為界吧,在我的測試和資料庫環境下耗時都是百毫秒級的,方便最重要)。無論何時都不用xml拼接sql的方式。
拼接sql的xmlnewid()是sqlserver生成uuid的函式,與本文內容無關
insert into tb_item values
(newid(),#,#,#,#,#,
#,#,#,#,#,#,
#,#,#,#,#,
#,#
service類
測試類
10條 25條資料插入經多次測試,波動性較大,但基本都在百毫秒級別
方式50條
100條
500條
1000條
批處理159ms
208ms
305ms
432ms
xml拼接sql
208ms
232ms
報錯報錯
反覆單條插入
1013ms
2266ms
8141ms
18861ms
其中 拼接sql方式在插入500條和1000條時報錯(似乎是因為sql語句過長,此條跟資料庫型別有關,未做其他資料庫的測試):com.microsoft.sqlserver.jdbc.sqlserverexception: 傳入的**格式資料流(tds)遠端過程呼叫(rpc)協議流不正確。此 rpc 請求中提供了過多的引數。最多應為 2100
可以發現
因此,在需求插入資料數量不多的情況下肯定用它了。
xml拼接sql是最不推薦的方式,使用時有大段的xml和sql語句要寫,很容易出錯,工作效率很低。更關鍵點是,雖然效率尚可,但是真正需要效率的時候你掛了,要你何用?
map容器的三種插入方式
map容器的三種插入方式 第一種 用insert函式插入pair資料。下面舉例說明 include include include using namespace std int main mapmapstudent mapstudent.insert pair 1,student one maps...
map容器元素的三種插入方式
stl中的map容器是我經常用的,但是因為map跟別的容器不太一樣,每次用的時候對於map中元素的插入方式總是忘卻,故而發篇博文,提醒我也提醒所有人map容器的三種插入方式 第一種 用insert函式插入pair資料。下面舉例說明 include include include using name...
MyBatis 三種批量插入操作對比
每當使用 orm 框架進行資料庫操作的時候,就會遇到批量插入操作,如果不對批量插入操作深入了解的話就會出現各種各樣的問題,比如操作異常,效能低下,繫結變數超過限制,甚至出現資料庫宕機等各種問題。本 chat 主要貢獻內容如下 mybatis 三種執行器介紹 mybatis 三種批量操作介紹 基於 s...