当前位置:   article > 正文

mysql批量插入addBatch()与addBatch(sql)比较_mysqlcppconnector addbatch

mysqlcppconnector addbatch

使用mysql驱动mysql-connector-java-5.1.3,通过wireshark抓包分析结果:

1.使用addBatch(sql):

  1. Class.forName("com.mysql.jdbc.Driver");//指定连接类型
  2. Connection con = DriverManager.getConnection(url, username, password);
  3. PreparedStatement pst = con.prepareStatement("");
  4. for (int i = 0; i < 10; i++) {
  5. StringBuilder sql = new StringBuilder();
  6. sql.append("INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES(");
  7. sql.append("'").append(i).append("',");
  8. sql.append("'").append(i).append("',");
  9. sql.append("'").append(i).append("',");
  10. sql.append("'").append(i).append("',");
  11. sql.append("'").append(i).append("',");
  12. sql.append("'").append(i).append("'");
  13. sql.append(");");
  14. pst.addBatch(sql.toString());
  15. }
  16. pst.executeBatch();
  17. pst.close();
  18. con.close();


执行结果:



可以看见其实客户端发送到mysql服务端其实是发送了10次;

1.使用addBatch():

  1. Class.forName("com.mysql.jdbc.Driver");//指定连接类型
  2. Connection con = DriverManager.getConnection(url, username, password);
  3. String sql = "INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES(?,?,?,?,?,?)";
  4. PreparedStatement pst = con.prepareStatement(sql);
  5. for (int i = 0; i < 10; i++) {
  6. int idx = 1;
  7. pst.setString(idx++, i + "");
  8. pst.setString(idx++, i + "");
  9. pst.setString(idx++, i + "");
  10. pst.setString(idx++, i + "");
  11. pst.setString(idx++, i + "");
  12. pst.setLong(idx++, i);
  13. pst.addBatch();
  14. }
  15. pst.executeBatch();
  16. pst.close();
  17. con.close();

可见客户端只发送了一次到mysql服务端;

3.结论使用mysql进行批量插入的时候,需要使用addBatch(),使用addBatch(sql)性能比较低;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器/article/detail/61833
推荐阅读
相关标签
  

闽ICP备14008679号