をヒント場合の計画を説明ステートメントの実行統計を含む実行計画。DBMS_XPLAN.DISPLAY_CURSOR対gather_plan_statisticsを使用していないことDBMS_XPLAN.DISPLAY_CURSORはあなたに<em>実際</em>を与えながらPLANはあなたに<em>理論</em>実行計画を与えるEXPLAIN、ちょうど私が理解から、2の間の差にいくつかの明確化を要求
EXPLAIN PLANはこのデータをPLAN_TABLEに格納しますが、DBMS_XPLANはその情報としてV $ SQL_PLAN、V $ SQL_PLAN_STATISTICSおよびV $ SQL_PLAN_STATISTICS_ALLビューを使用します。
しかし、DISPLAY_CURSORがそのステートメントの実際のランタイム統計情報を収集するには、/*+ gather_plan_statistics */
ヒントを設定する必要があります。それ以外の場合は、V $ SQL_PLANのみが格納されます。これは実行プランのみを提供し、実際の実行統計は提供しません。 /*+ gather_plan_statistics */
で、V $ SQL_PLAN_STATISTICSが満たされている場合のみです。
私はgather_plan_statisticsヒントを使用しないと、EXPLAIN PLANとDISPLAY_CURSORは常に同じ実行計画を同じステートメントに与えますか?
しかし、/ * + gather_plan_statistics * /を使用しないと、正しいステートメントの実際のランタイム統計が収集されません。推定されるカーディナリティのみを表示します。すなわち、コールするときに「A-ROWS」列が表示されません。ヒントを使用しなかった場合はdbms_xplan.display_cursor(format => 'allstats') – BYS2
ヒントでは、他のsql_idを取得します。この統計収集を有効にするには、アプリケーションセッション(またはアプリケーション実行時のインスタンスレベル)でstatistics_level = 'ALL'を設定します。トラブルシューティングにのみ使用する必要があります。 '典型的な'と比較して余分なオーバーヘッドが発生します。 –