oracle中的statement.executeQuery非常慢&不符

时间:2015-02-26 17:04:26

标签: java oracle performance web-services

当我尝试使用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来提取数据吗?

1 个答案:

答案 0 :(得分:0)

如果基于一个参数值开发查询计划,则查询性能可能会发生显着变化,然后提供的现有计划选择不同的值。或者这可能表明表统计信息是陈旧的。您可以通过运行以下内容来更新表的统计信息:

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS('YOURSCHEMA', 'YOURTABLE');
END;

祝你好运。