web-dev-qa-db-ja.com

Oracle Sql開発者でExplain Planを表示するにはどうすればよいですか?

クエリ実行のパフォーマンスが非常に低いSQLクエリがほとんどないので、このクエリのクエリ実行プランを確認したい。以下のクエリを実行しようとしていますが、クエリ実行プランが表示されません。その唯一の表示メッセージプランFORが成功しました。クエリの計画を説明するためにOracle SQL Developerで行う必要がある設定があるかどうかはわかりません:

EXPLAIN PLAN FOR 
Select SO.P_OPTION_ID FROM
SIMSIM 
   JOIN P_TYPE PT on PT.KEY=SIM.P_TYPE_KEY JOIN P_CONFIG PC ON PC.ID=PT.PRODUCT_CONFIG_ID
JOIN P_OPTION PO ON PO.OPTION_KEY=PC.DEFAULT_PRODUCT_OPTIONS JOIN S_OPTION SO ON SO.SERVICE_ID=SIM.ASSIGNED_TO_SERVICE_ID
JOIN AVV_NO AN ON SIM.ASSIGNED_ANUMBER_ID = AN.ID
 where SO.STATUS_ID IN (20,40) 
 and SO.ID < to_char(SYSDATE - numtodsinterval (  1,'MINUTE' ), 'YYYYMMDDHH24MISS')||'0000'
 and SO.ID > to_char(SYSDATE - numtodsinterval (  1, 'HOUR' ), 'YYYYMMDDHH24MISS')||'0000'
and NOT EXISTS(SELECT ID from TEMP_BPL T WHERE T.ID = SO.ID );
41
Andrew

計画の説明

SQL Developerでは、EXPLAIN PLAN FOR文を使用する必要はありません。 F10を押すか、説明計画アイコンをクリックします。

enter image description here

その後、Explain Planウィンドウに表示されます。

SQL * Plusを使用している場合は、DBMS_XPLANを使用します。

例えば、

SQL> EXPLAIN PLAN FOR
  2  SELECT * FROM DUAL;

Explained.

SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 272002086

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

8 rows selected.

SQL>

説明計画の作成および表示方法 を参照してください

70
Lalit Kumar B

Explainは、オプティマイザーがクエリの実行をどのように考えるかを示すだけです。

実際の計画を表示するには、SQLを1回実行する必要があります。次に、同じセッションを使用して次を実行します。

@yoursql 
select * from table(dbms_xplan.display_cursor()) 

これにより、実行中に使用される実際の計画を表示できます。 dbms_xplanを使用してプランを表示するには、他にもいくつかの方法があります。 「dbms_xplan」という用語を使用してGoogleを実行できます。

5
Jin