2010-12-07 17 views
10

Me pregunto cómo puedo obtener el plan de explicación con Java. La razón por la que necesito esto es porque tenemos un marco en el que los usuarios especiales pueden elaborar informes. Estos informes a veces crean grandes consultas en las que queremos explicar sobre la marcha y almacenar el costo de. De esta forma, podemos analizar las consultas de alto costo más adelante y optimizar.JDBC Oracle - Explicar el plan de explicación para la consulta

Código de ejemplo que me da una excepción columna ilegal:

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)); 
     } 

Respuesta

14

Utilice esta:

 
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)); 
} 
+0

Gracias! Esto funciona. ¿Sabes cómo obtener solo el costo en lugar de toda la tabla del plan? –

+3

Eche un vistazo a la documentación de dbms_xplan.display(). Puede pasarle parámetros, seleccionar solo la información que necesita –

Cuestiones relacionadas