mysql批量插入addBatch()与addBatch(sql)比较
2018-01-22 18:01
429 查看
使用mysql驱动mysql-connector-java-5.1.3,通过wireshark抓包分析结果:
1.使用addBatch(sql):
执行结果:
可以看见其实客户端发送到mysql服务端其实是发送了10次;
1.使用addBatch():
Class.forName("com.mysql.jdbc.Driver");//指定连接类型
Connection con = DriverManager.getConnection(url, username, password);
String sql = "INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES(?,?,?,?,?,?)";
PreparedStatement pst = con.prepareStatement(sql);
for (int i = 0; i < 10; i++) {
int idx = 1;
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setLong(idx++, i);
pst.addBatch();
}
pst.executeBatch();
pst.close();
con.close();
可见客户端只发送了一次到mysql服务端;
3.结论使用mysql进行批量插入的时候,需要使用addBatch(),使用addBatch(sql)性能比较低;
1.使用addBatch(sql):
Class.forName("com.mysql.jdbc.Driver");//指定连接类型 Connection con = DriverManager.getConnection(url, username, password); PreparedStatement pst = con.prepareStatement(""); for (int i = 0; i < 10; i++) { StringBuilder sql = new StringBuilder(); sql.append("INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES("); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("'"); sql.append(");"); pst.addBatch(sql.toString()); } pst.executeBatch(); pst.close(); con.close();
执行结果:
可以看见其实客户端发送到mysql服务端其实是发送了10次;
1.使用addBatch():
Class.forName("com.mysql.jdbc.Driver");//指定连接类型
Connection con = DriverManager.getConnection(url, username, password);
String sql = "INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES(?,?,?,?,?,?)";
PreparedStatement pst = con.prepareStatement(sql);
for (int i = 0; i < 10; i++) {
int idx = 1;
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setString(idx++, i + "");
pst.setLong(idx++, i);
pst.addBatch();
}
pst.executeBatch();
pst.close();
con.close();
可见客户端只发送了一次到mysql服务端;
3.结论使用mysql进行批量插入的时候,需要使用addBatch(),使用addBatch(sql)性能比较低;
相关文章推荐
- Oracle/Mysql批量插入的sql,效率比较高
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- SQL获取最后插入的ID值SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- SQL获取插入后数据ID的三种方式比较
- MySql批量插入优化Sql执行效率
- hibernate中用sql addBatch
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化详解
- mysql批量插入,更新的sql语句
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化