2010-12-07 6 views
10

Javaを使用してどのようにExplainプランをフェッチできるのだろうか。なぜなら、特別なユーザーがレポートを作成できるフレームワークがあるからです。これらのレポートでは、膨大なクエリが作成されることがあり、その場で説明し、コストを保存したい場合があります。このようにして、後でコストの高いクエリを分析して最適化することができます。私に違法列例外を与えるJDBC Oracle - クエリーのためのExplainプランを取得する

例コード:

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

答えて

14

使用この:

 
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

ありがとうございます!これは機能します。プランテーブル全体ではなくコストのみを取得する方法を知っていますか? –

+3

dbms_xplan.display()のドキュメントをご覧ください。パラメータを渡して、必要な情報だけを選択することができます –

関連する問題