JDBC executeBatch() 效率低 如何解决 10
//加载数据驱动Class.forName("oracle.jdbc.driver.OracleDriver");//获取连接conn=DriverManager.get...
// 加载数据驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 获取连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:iasdb","borough_user","password");
conn.setAutoCommit(false);// 取消自动事务提交
String sql1 = " update approved_maininfo t set t.declareflag='N' where 1=1 and t.seqcode in (?) ";
ps = conn.prepareStatement(sql1);
ps.setString(1, a);其中a是由500个主键拼接而成,如1,2,3,4,……500
ps.addBatch();
//类似以上操作 ps.accBatch();执行该操作7次
ps.executeBatch();// 执行批
try {// 这里一定要捕捉异常
conn.commit();// 提交事务
} catch (SQLException exc) {
conn.rollback();// 在批处理命令中,如果有一个命令出现了错误,则回滚
}
执行该操作,用的时间特长,请问哪位能给优化一下 展开
Class.forName("oracle.jdbc.driver.OracleDriver");
// 获取连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:iasdb","borough_user","password");
conn.setAutoCommit(false);// 取消自动事务提交
String sql1 = " update approved_maininfo t set t.declareflag='N' where 1=1 and t.seqcode in (?) ";
ps = conn.prepareStatement(sql1);
ps.setString(1, a);其中a是由500个主键拼接而成,如1,2,3,4,……500
ps.addBatch();
//类似以上操作 ps.accBatch();执行该操作7次
ps.executeBatch();// 执行批
try {// 这里一定要捕捉异常
conn.commit();// 提交事务
} catch (SQLException exc) {
conn.rollback();// 在批处理命令中,如果有一个命令出现了错误,则回滚
}
执行该操作,用的时间特长,请问哪位能给优化一下 展开
展开全部
conn.commit() 不要一次性全部提交事务,分批提交,比如1000提交一次,这样能有效提高效率!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这是批处理嘛 你这不是就和直接执行一次sql一样吗?
你要想批处理 你直接把主键拼的字符串拆开 然后使用批处理呗 并且in语句遇到大表的话就慢
你把 update approved_maininfo t set t.declareflag='N' where 1=1 and t.seqcode =?
然后把主键拆成一个数组来做 估计会快
你要想批处理 你直接把主键拼的字符串拆开 然后使用批处理呗 并且in语句遇到大表的话就慢
你把 update approved_maininfo t set t.declareflag='N' where 1=1 and t.seqcode =?
然后把主键拆成一个数组来做 估计会快
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用预编译语句 。
Exam :
Class.forName("sun.jdbc.JdbcOdbcDriver") ;
Connection c = DriverManager.getConnetction("jdbc:odbc:studentDatabase") ;
// 预编译
PreparedStatement ps = c.prepareStatement("insert into stu values(?,?,?)") ;
ps.setInt(1,2009123) ;
ps.setString(2,"Jack") ;
ps.setInt(3,25) ;
ps.executeUpdate() ;
c.close() ;
ps.close() ;
Exam :
Class.forName("sun.jdbc.JdbcOdbcDriver") ;
Connection c = DriverManager.getConnetction("jdbc:odbc:studentDatabase") ;
// 预编译
PreparedStatement ps = c.prepareStatement("insert into stu values(?,?,?)") ;
ps.setInt(1,2009123) ;
ps.setString(2,"Jack") ;
ps.setInt(3,25) ;
ps.executeUpdate() ;
c.close() ;
ps.close() ;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询