JDBC Prepared ステートメントでリモート DB を更新しています。同じコードを実行してローカル DB を更新すると数ミリ秒かかりますが、リモート DB では約 900 行に時間がかかりすぎます。すべての行を合わせたサイズは 160 KB です。リモート ホストは Hostgator で、テーブルの DB エンジンは InnoDB です。
これが私のコードです:
String insertTableSQL = "INSERT INTO abc(zzz,c,d,e,timestamp) VALUES (?,?,?,?,?)";
String delSt = "DELETE FROM abc WHERE zzz= ?";
del = connection.prepareStatement(delSt);
preparedStatement = connection.prepareStatement(insertTableSQL);
connection.setAutoCommit(false);
Iterator<DataObject> itr = updationList.iterator();
while (itr.hasNext()) {
DataObject dO = itr.next();
del.setString(1, dO.a + ":" + dO.b);
for (SubObject sO : dO.getsO.values()) {
try {
preparedStatement.setString(1, sO.a + ":" + sO.b);
preparedStatement.setString(2, sO.c);
preparedStatement.setInt(3, sO.d);
preparedStatement.setFloat(4, sO.e);
preparedStatement.setTimestamp(5, getCurrentTimeStamp());
preparedStatement.addBatch();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
try {
del.execute();
preparedStatement.executeBatch();
} catch (Exception e) {
e.printStackTrace();
}
try {
connection.commit();
}
...