0
Oracle JDBC接続を使用しており、CallableStatementを使用してプロシージャを実行しています。resultset.next時間がかかります
procedureCall.executeUpdate(); // That took 149 milliseconds
resultSet.next() // That took 5287 milliseconds
クエリ実行時間はokです。しかし、私がresultSet.nextを実行すると、時間がかかります。
誰でもこのような現象が起こっている理由を教えてください。
EDIT
try (CallableStatement procedureCall = connection.prepareCall(PROC_NAME)) {
procedureCall.setLong("param",value);
procedureCall.registerOutParameter("param1",OracleTypes.CURSOR)
procedureCall.registerOutParameter("param2",OracleTypes.CURSOR)
procedureCall.executeUpdate();
resultSet = (ResultSet) procedureCall.getObject("param1");
while(resultset.next()){
}
resultSet.close();
resultSet = (ResultSet) procedureCall.getObject("param2");
while(resultset.next()){
}
resultSet.close();
}catch(SQLException e){
}finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException ex) { }
}
}
回避策 もまだ同じ時間を割いresultset.setFetchsize(2);
とif(resultset.next()){}
を試してみました。
間に操作はありません。 –
executeUpdate()で更新されるレコードの数はいくつですか?これら2つの前後にコードラインを追加してください。 – Galcoholic
こんにちは、コードサンプルを追加しました。 –