我有以下代码:
void updateRecords(long[] ids, Timestamp[] dates, Connection connection
{
PreparedStatement statement = connection.prepareStatement(
"Update Foo set date = ? where id = ?");
for(int i =0; i < ids.length;i++)
{
statement.setTimestamp(1,dates[i]);
statement.setLong(2,ids[i]);
statement.addBatch();
if(i %25000 == 0)
{
statement.executeBatch();
statement.clearBatch();
}
}
statement.executeBatch();
}
这个性能很糟糕,100 万次更新需要 2 个小时以上。所以在我的多部分问题中:
1) 在 Oracle 上执行了多少条语句?
2) 如何提高在 Oracle 上执行的语句数量,以减少执行 100 万次更新所需的时间?
这是 Oracle 10g 和 Java 6。
我想这会执行 N 个语句,其中 N 是ids