JDBC postgres select avg()查询执行时间很长并且返回null



我试图从我的postgresql数据库中使用java获取一列的平均值。下面是查询:

select cast(avg(qtime) as varchar) as average from es_logger where qdate >= '07-JUL-15 10:00:00' and qdate < '07-JUL-15 11:00:00' and ip = 'x.x.x.x'

这个查询在postgresql控制台中执行大约100毫秒,但是在我的java代码中调用时,执行和返回大约需要10秒。

下面是代码片段:

ps = con.prepareStatement(sql);
rs = ps.executeQuery();
rs.next();
String d = rs.getString(1);

而且,这个查询总是在java中返回null,而它在postgresql控制台上给出一个正确的答案。

我试过从我的代码中运行其他select查询,它们运行得很好。

谁能帮我解释一下为什么会发生这种情况?

编辑:我使用Java 1.7_51与postgresql 9.2和驱动程序postgresql-9.1-901.jdbc4.jar

终于想明白了。

结果是:

1)响应时间长是数据库问题。同样的查询在不同的postgresql数据库上运行得非常快。

2)空值被返回,因为我传递我的时间戳参数作为一个字符串。只需像这里建议的那样将其作为时间戳传递,它就可以工作了。

最新更新