【发布时间】:2011-12-02 12:47:28
【问题描述】:
我想从“解释”查询时获得的查询计划中获取成本数字。有没有办法在 Java ResultSet(或类似对象)中获取这些数据?
【问题讨论】:
标签: java postgresql jdbc
我想从“解释”查询时获得的查询计划中获取成本数字。有没有办法在 Java ResultSet(或类似对象)中获取这些数据?
【问题讨论】:
标签: java postgresql jdbc
当然,只需将其作为常规语句运行即可:
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("explain analyze select * from foo");
while (rs.next())
{
System.out.println(rs.getString(1));
}
【讨论】:
除了上面提供的答案,我建议您在 PostgreSQL 9.0 及更高版本中利用将 EXPLAIN 计划格式化为 XML 的功能。
解释(分析,格式化xml)选择...
这将为您提供解释输出,您可以通过将其操作为 XML 来更轻松地在 Java 中使用它。
【讨论】:
这次是 PreparedStatement 的另一个示例。
像这样:
PreparedStatement preparedStatement = connection.prepareStatement("EXPLAIN (ANALYZE true , VERBOSE true , BUFFERS true)" +
"SELECT * FROM Table");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
或者使用绑定参数:
PreparedStatement preparedStatement = connection.prepareStatement("EXPLAIN (ANALYZE true , VERBOSE true , BUFFERS true)" +
"SELECT * FROM Player WHERE id = ?");
preparedStatement.setLong(1, 1);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
【讨论】: