Java - PreparedStatement , executeBatch

摘要: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();

}