我们管理一个Java应用程序,该应用程序允许通过设置框和验证来选择行。 我想创建第二个过程,以在外壳中重现Java应用程序的相同操作。在Java代码中查找,我发现该应用程序使用sql过程。 Java处理中的问题仅需几秒钟,而SQL则需要15或30分钟。 在我看来,该程序在Java中只在块中执行一次,而在Shell中执行一次 我构造了一个sql脚本,并逐行执行,因此处理时间根据要执行的行数而变化。
in java :
public static void insertTable(String Id,String[] List,String group)
throws SQLException {
CallableStatement statement = null;
Connection conn = null;
try {
String procedure = "begin insertTable(?,?,?); end;";
conn = DBManager.getconnection();
statement = conn.prepareCall(procedure);
for (int i = 0; i < List.length; i++) {
statement.setString(1,Id);
statement.setString(2,List[i]);
statement.setString(3,group);
statement.execute();
}
in script sql :
set serveroutput on
whenever sqlerror exit SQL.SQLCODE
exec insertTable ('1575','TATA-11','FFF');
exec insertTable ('1574','TOTO-22','RRR');
exec insertTable ('1573','TITI-33','NNN');
exec insertTable ('1572','JOJO-44','UUU');
.....
exit 0;
要执行的行是可变的,一条可以有2000到10000行,因此平均执行速度为15行乘2秒... 还要写在文件日志中……所有这些都会减慢处理速度。
是否可以对所有行一次执行该过程?一种加快程序执行速度的方法?
谢谢