java - JDBC Oracle - 获取查询的解释计划

标签 java oracle jdbc sql-execution-plan explain

我想知道如何使用 Java 获取解释计划。我需要这个的原因是因为我们有一个框架,特殊用户可以在其中制作报告。这些报告有时会构建巨大的查询,我们想在其中即时解释并存储成本。这样我们可以稍后分析高成本查询并进行优化。

给我非法列异常的示例代码:

ResultSet rs = null;
   try {
        oracle = ConnectionManager.getConnection(ConnectionManager.Test);
        pstmt = oracle.prepareStatement("begin execute immediate 
        'explain plan for SELECT   1 from Dual'; end;");
        rs = pstmt.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }

最佳答案

使用这个:

oracle = ConnectionManager.getConnection(ConnectionManager.Test);
stmt = oracle.createStatement()
stmt.execute("explain plan for SELECT   1 from Dual");
rs = stmt.executeQuery("select plan_table_output from table(dbms_xplan.display())");
while (rs.next()) 
{
  System.out.println(rs.getString(1));
}

关于java - JDBC Oracle - 获取查询的解释计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376329/

相关文章:

java - jdk7 watch service API中,什么时候会抛出OVERFLOW事件?

Java Spring Boot 异常处理

sql - 根据字符范围选择字符串字段的最佳方法是什么?

jdbc - Hadoop hive 问题

java - JDBC - NetBeans x MySQL

java - 如何计算 Spring 测试中 Spring Boot 加载的次数?

java - Java动态访问MySQL数据库

oracle - 在for循环中使用.count

oracle - 如何从 Pl/SQL 中的存储函数返回临时 CLOB 实例?

java - 异常: java. lang.ClassNotFoundException : org. apache.commons.dbcp.BasicDataSource