我创建了一个向 MySql 数据库插入数百万个值的程序。 我读到有关批量插入的信息,它可以优化我的程序并使其更快,但是当我尝试这样做时,它以相同的方式工作。 我没有将每个值插入数据库,而是每次将 500 个值保存在一个列表中,然后将它们插入一个大循环中,如下所示:
for(int i=0;i<500;i++)
{
insertData(list.get(i));
}
然后我删除列表中的所有值并再次开始收集 500 个值。
效果不是更好吗?
我的插入代码是:
public void insertToNameTable(String id,String name) throws SQLException
{
PreparedStatement ps=null;
ps= conn.prepareStatement("INSERT INTO NameTable values(?,?,?)",user.getId(),user.getName());
ps.setString(1,id);
ps.setString(2,name);
ps.setBoolean(3,false);
ps.executeUpdate();
}
我有一些问题:
1.为什么批量插入时速度不快?
2.每次输入多少个值才能更快?(500,1000,10000)一起输入越多越好?
3. 将值插入数据库的方式是最好的方式吗?
最佳答案
这是批量插入的有效方式。
Connection connection = new getConnection();
Statement statement = connection.createStatement();
for (String query : queries) {
statement.addBatch(query);
}
statement.executeBatch();
statement.close();
connection.close();
关于java - 使用批量插入向数据库插入大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27542333/