gpt4 book ai didi

java - JDBC MySQL DML 语句插入与嵌套选择性能

转载 作者:行者123 更新时间:2023-11-29 23:29:35 27 4
gpt4 key购买 nike

仅供引用 - 我不是开发人员,但在必须时编写代码:) 尝试编写一些 java 代码以批量方式更新数据库的多个记录。当我插入新行时,我正在查询另一个表以查找相关数据以添加相关日期。

代码似乎可以工作,但我的问题是性能。我发现整批 dml 语句每条语句的执行时间大约为 1 秒。我正在更新数千条记录,因此这项工作将需要相当长的时间才能执行。因此,我正在寻找有关如何在最大化性能的同时做到这一点的任何其他想法。

这就是我现在正在做的事情。

for(Referrer_UpdateSet i : referrerUpdateSet)
{


String dmlStatement = "INSERT INTO TempRefURL (firstTouchDate) " +
"(SELECT activityDateTime as firstTouch "+
"FROM referrer_URL_backup_10292014 "+
"WHERE mktPersonId = ? "+
"ORDER BY activityDateTime ASC LIMIT 1)";
stmt = mktoUTMConn.prepareStatement(dmlStatement);
stmt.setInt(1, i.id);
//System.out.println(stmt+" \n");
stmt.executeUpdate();
}
mktoUTMConn.commit();

我也在尝试preparedStatements.addBatch,但它似乎不起作用(只插入了1行..)

        System.out.println("updating temp table with referrer URL data");
//iterate through array of parsed referrer URLs

String dmlStatement = "UPDATE dml_sandbox.TempRefURL SET Referrer_URL = ? " + "WHERE id = ?";
for(Referrer_UpdateSet i : referrerUpdateSet){




stmt = mktoUTMConn.prepareStatement(dmlStatement);
stmt.setInt(2, i.id);
stmt.setString(1, i.cleanURL);
//System.out.println(stmt+" \n");
stmt.addBatch();
//stmt.executeUpdate();


//System.out.println(stmt+" \n");
}
stmt.executeBatch();
System.out.println("Done updating temp table with referrer URL data");
mktoUTMConn.commit();

如有任何建议,我们将不胜感激。谢谢!

最佳答案

简单修复。请参阅我上面的评论。这是新代码:

String dmlStatement = "UPDATE dml_sandbox.TempRefURL SET Referrer_URL = ? " + "WHERE id = ?";
stmt = mktoUTMConn.prepareStatement(dmlStatement);
//iterate through array of parsed referrer URLs
for(Referrer_UpdateSet i : referrerUpdateSet){

stmt.setInt(2, i.id);
stmt.setString(1, i.cleanURL);
stmt.addBatch();
stmt.executeUpdate();

}
System.out.println(stmt+" \n");
int[] recordsAffected = stmt.executeBatch();
System.out.println("Done updating temp table with referrer URL data");
System.out.println(recordsAffected.length + " records affected");
mktoUTMConn.commit();

关于java - JDBC MySQL DML 语句插入与嵌套选择性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com