https://www.cnblogs.com/DreamDrive/p/5757693.html
如上鏈接,插入100萬行耗時24秒,行長非常短
可以說非常慢
如下我的測驗程式,插入10萬行,行長是如上鏈接的10幾倍
按位元組數算的話,我INSERT的位元組比如上鏈接還要多
但是我在筆記本上只花了1秒種。
這是什么原因?為什么我的測驗這么快?
long sss = System.currentTimeMillis();
String strsql = "insert into test values (?,?,?,?)";
PreparedStatement prest = conn.prepareStatement(strsql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
for (int i = 1; i <= 100000; i++)
{
prest.setString(1,"1001100"+i);
prest.setString(2,"你好你好"+i);
prest.setString(3,"XXXX"+i);
prest.setString(4,"你好你好你好你好你好你好你好你好你好你好你好你好"+i);
prest.addBatch();
}
prest.executeBatch();
long eee = System.currentTimeMillis() - sss;
System.out.println("\nbatch insert Time spend: " + eee);
除了這個批量插入外,還有更高效的寫法碼?mybatis?
貌似很復雜
謝謝
uj5u.com熱心網友回復:
insert into table1 (column1,column2,...) values(a1,a2,...),
(b1,b2,...),
(c1,c2,...)
注意sql陳述句的長度即可
uj5u.com熱心網友回復:
謝謝,我想請教的是性能,為啥我的很快,而網上別人寫的說很慢
uj5u.com熱心網友回復:
你只執行了一次,換句話說,你和資料庫建立會話只建立了一次,所以比較快,你的for回圈最終生成的sql就是我發的sqlinsert into table1 (column1,column2,...) values
(a1,a2,...),
(b1,b2,...),
(c1,c2,...),
...
(c100000,c200000,...)---一共十萬條資料一起往資料庫中插入,目前這種插入資料的方式效率最高。
https://www.cnblogs.com/DreamDrive/p/5757693.html,這個檔案里他是每1000條執行一次,相當于有100個
insert into table1 (column1,column2,...) values
(a1,a2,...),
(b1,b2,...),
(c1,c2,...),
...
(c1000,c2000,...)-------1000條資料
所以比較慢,但是這種要注意sql長度,mysql對執行的sql陳述句長度有要求,通過max_allowed_packet設定,默認1M
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285055.html
標籤:Java SE
上一篇:詞頻統計演算法求解
下一篇:如何分辨專案框架
