gpt4 book ai didi

java - 代码执行时间非常长

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:57 25 4
gpt4 key购买 nike

我正在尝试将数据从一个表移动到另一个表(两个表基本相同),我使用的方法是INSERT-SELECT

我面临的问题是我的java程序似乎被卡住在那里,但我仍然可以轻松地用^C强行关闭它,所以我认为它可能仍然存在,但由于某种原因卡住了。

这是我的代码,陷入了这个问题

public String moveData(String sql, int day) {

Connection con = null;
PreparedStatement stmt = null;
int count;

try {

con = DriverManager.getConnection(DSN, Username, Password);
stmt = con.prepareStatement(sql);
stmt.setInt(1, day);

count = stmt.executeUpdate();

return String.valueOf(count);

} catch (SQLException e) {
System.out.println("SQL exception: " + e.getMessage());
e.printStackTrace();

return "false";

} finally {
try {
stmt.close();
} catch (Exception e) {
}

try {
con.close();
} catch (Exception e) {
}
}
}

还有 SQL,在 SQL Developer 中执行速度非常快,23k 行数据只需 0.231 秒

insert into Request_History  (customer_id, request_id, status, transaction_date, last_modified)
SELECT customer_id, request_id, status, transaction_date, current_timestamp
from Request_Log
where transaction_date <= (sysdate - NUMTODSINTERVAL(:1 ,'DAY'))

我发现它们没有问题,有什么我错过的吗?

更新

由于程序和SQL命令没有解决,所以我想改变DB端的思维方式。

谁能告诉我需要什么样的权限才能在 11g 上毫无问题地执行 INSERT-SELECT SQL 命令?因为据我所知,该命令只需要基本权限,例如 SELECT/INSERT/UPDATE/DELETE 即可执行。

最佳答案

整个插入过程的时间取决于三个因素:

  • 查询结果集中有多少行
  • 是否有可在查询级别使用的索引(最好是在 Request_Log.transaction_date 上建立索引
  • 插入阶段是否有任何必须维护的约束和索引(Request_History 表)

检查语句的执行计划,看看是否有任何东西 - 最糟糕的是全表扫描。如果您允许,您也可以将执行计划粘贴到此处。

关于java - 代码执行时间非常长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894028/

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