当我尝试使用java webservice提取oracle数据时,执行查询所花费的时间是如此不一致。
要获取5000条记录,executeQuery需要8分钟,有时在20秒内执行相同的查询。我认为这是由于缓存。但很少有实例第一次执行速度非常快。我添加了以下代码,但仍然不一致。
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(5000);
resultSet = statement.executeQuery(query);
数据库位于不同的服务器中。当我使用sql developer执行查询时,它只用了20秒就是一致的。
我正在使用oracle.jdbc.driver.OracleDriver。任何人都可以帮助我解决问题/更好的方法来实现java webservice来提取数据吗?
答案 0 :(得分:0)
如果基于一个参数值开发查询计划,则查询性能可能会发生显着变化,然后提供的现有计划选择不同的值。或者这可能表明表统计信息是陈旧的。您可以通过运行以下内容来更新表的统计信息:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS('YOURSCHEMA', 'YOURTABLE');
END;
祝你好运。