摘要:Java - PreparedStatement , executeBatch
大量更新insert或update的時候,
因為每一天連線,都是一個request與response。
相當耗費連線時間、額外的開始與結束過程中的資料傳輸。
insert資料,我可以組很長很長的字串,去新增,
但update,我卻得一條一條去更新。
太耗時間。
用Transcation,也沒有效果,因為他只確保你的資料完整性。
不代表他不耗網路傳輸時間。
查一查,JDBC,有Batch的功能。
http://viralpatel.net/blogs/batch-insert-in-java-jdbc/
原本我update 10000筆的資料,會耗掉48分鐘。
現在我update 10000筆資料,耗掉20分鐘左右。
算是有很大的改善。(還是不夠好呀~~)
程式碼如下。
假設已取得
Connection conn = 取得;
String sql = " update table set update_datetime = now() where id = ? ';
PreparedStatement pstmt = conn.prepareStatement(Sql);
try
{
int i = 0;
while(String id:list)
{
i++;
pstmt.setString(1,id);
pstmt.addBatch();
if(i%1000==0)
pstmt.executeBatch();
}
pstmt.executeBatch();
}catch(Exception ex)
{
ex.printStackTrace();
}
finally()
{
conn.close();
pstmt.close();
}