【发布时间】:2023-03-20 07:31:01
【问题描述】:
我很好奇我们在 Java 中通过循环执行 MySQL 查询的速度有多快,而且我编写的代码需要很长时间。我相信有一种更快的方法可以做到这一点。这是执行查询的代码。
PreparedStatement ps=connection.prepareStatement("INSERT INTO books.author VALUES (?,?,?)");
for (int i=0;i<100000;i++)
{
ps.setString(1,test[i][0]);
ps.setString(2,test[i][1]);
ps.setString(3,test[i][2]);
ps.addBatch();
}
int []p=ps.executeBatch();
任何帮助将不胜感激。谢谢
【问题讨论】:
-
以较小个批次执行它可能会更快。
-
在this question 中,得出的结论是你的做法是最快的,因为语句只需要解析一次。它适用于 Oracle 而不是 MySql,但我认为同样的考虑也适用于此。
-
好的,我将尝试创建较小的批次并执行,看看它是否对执行时间有任何影响。谢谢
-
由于您使用的是 MySQL,您可能希望使用
rewriteBatchedStatements=true,如 this answer 中所述。 -
哇!该语句将插入 100k 值所需的时间从大约 20 分钟 + 减少到仅 5 秒。这是惊人的。非常感谢戈德·汤普森。
标签: java mysql database performance jdbc