Java 3種批量插入更新操作的效率橫向比較

2021-08-21 09:42:05 字數 2782 閱讀 4781

以前總是說批量插入和更新的效率比非批量的要高,但是到底高多少,沒有評估過,今天我就具體的測試下示例xml

"insertuser">

insert into test_user (u_name,create_date) value (#,sysdate())

示例**:

for (int i = 1; i <= num; i++)
示例**:

connection conn;

try

prest.executebatch();

conn.commit();

conn.close();

} catch (exception ex)

資料量分別是10,100,300,1000,5000條資料

資料量:10

批量更新耗時:279

非批量更新耗時:1522

jdbc批量更新耗時:255

資料量:100

批量更新耗時:720

非批量更新耗時:3391

jdbc批量更新耗時:1912

資料量:300

批量更新耗時:987

非批量更新耗時:9827

jdbc批量更新耗時:7616

資料量:500

批量更新耗時:1649

非批量更新耗時:16253

jdbc批量更新耗時:10475

資料量:1000

批量更新耗時:2552

非批量更新耗時:33048

jdbc批量更新耗時:20793

資料量:5000

批量更新耗時:19066

非批量更新耗時:239127

jdbc批量更新耗時:103273

綜上分析,效率排比如下

mybatis批量更新 > jdbc批量更新 > 迴圈呼叫update語句

示例xml

update test_user set test_user.u_name = (#) where test_user.u_name = (#)

示例**

for (int i = 1; i <= num; i++)
示例**

connection conn;

try

stmt.executebatch();

conn.commit();

conn.close();

} catch (exception ex)

其實是利用了mysql的批量更新的語法

case when的語法

詳見 【case when 語法】

示例xml

id="batchupdatelist">

update test_user

prefix="set"

suffixoverrides=",">

prefix="u_name =case"

suffix="end,">

item="item"

collection="userlist">

when test_user.u_name = (#)

then #

foreach>

trim>

trim>

where

item="item"

collection="userlist"

separator="or">

(test_user.u_name = (#))

foreach>

update>

示例**

for (int i = 1

; i <= num; i++)

userdao.batchupdatelist(userlist);

資料量分別是10,100,300,1000,5000條資料

資料量:10

批量更新耗時:279

非批量更新耗時:1522

jdbc批量更新耗時:255

資料量:100

批量更新耗時:720

非批量更新耗時:3391

jdbc批量更新耗時:1912

資料量:300

批量更新耗時:987

非批量更新耗時:9827

jdbc批量更新耗時:7616

資料量:500

批量更新耗時:1649

非批量更新耗時:16253

jdbc批量更新耗時:10475

資料量:1000

批量更新耗時:2552

非批量更新耗時:33048

jdbc批量更新耗時:20793

資料量:5000

批量更新耗時:19066

非批量更新耗時:239127

jdbc批量更新耗時:103273

綜上分析,效率排比如下

mybatis批量更新 > jdbc批量更新 > 迴圈呼叫update語句

java 3種簡單的排序

1.氣泡排序 public class testsort bubblesort a 靜態方法中直接通過類名呼叫靜態方法,或者通過物件去呼叫非靜態的方法 for int i 0 i i j insertsort array for int i 0 i 1 a j 1 tmp a j tmp 每乙個a ...

Mysql 批量操作,存在更新,不存在插入

在大量資料插入,但是有很多重複資料。假設有如下資料 語法如下 insert into table name clo1,col2,values val1 1,val1 2,val2 1,val2 2,val3 1,val3 2,on duplicate key update clo1 values c...

記錄我的「從零開始學Java」 3

今天又寫了乙個通過生成隨機數組來轉化為字母進行輸出的類,但是發現乙個很神奇的現象 當使用者輸入的隨機數組內元素數量較多時,例如56個元素,此時該陣列最終輸出的數值和字母表現出來驚人的重複性,甚至是aaa bbb ccc這樣的結構!於是我又研究了好久為什麼會這樣,最後發現。我在輸出陣列之前對陣列進行了...