Statement批處理

批處理就是一批一批的處理,而不是一個一個的處理。mysql

當你有10條sql語句要執行時,一次向服務器發送一條語句,這麼作效率不好。處理的方案是用批處理,即一次向服務器發送多條sql語句,而後由服務器一次性處理。sql

批處理只針對更新(增、刪、改),沒有查詢什麼事。緩存

添加批的語句:PreparedStatement.addBatch();
執行批的語句:PreparedStatement.executeBatch();服務器

mysql默認批處理是關閉的,須要在url參數後面加上?rewriteBatchedStatement=true;url

示例:get

 Connection con=null;
PreparedStatement st=null;
String sql="insert into person values(?,?,?)";
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest","root","wdl03707552882");
st=con.prepareStatement(sql);//進行預編譯
for(int i=1;i<=5000;i++){
st.setInt(1,i);
st.setString(2,"name"+i);
st.setString(3,"email"+i);
st.addBatch();
if(i%1000==0){
st.executeBatch();
//清空已有的sql
st.clearBatch();
}
}

//爲了確保緩存沒有sql語句未被執行
st.executeBatch();
long end=(int )System.currentTimeMillis();
}
catch(Exception a){
a.printStackTrace();
}


}
}it

/*
*採用PreaparedStatement.addBatch()實現批處理
*優勢:發送的是預編譯的sql語句。執行效率高。
*缺點:只能應用到sql語句相同,但參數不一樣的批處理中,所以此種像是的批處理常常用於在同一個表中
*批量插入數據或者批量更新數據。
*/sio

相關文章
相關標籤/搜索