次のコードがあります。
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