実行計画の採取方法

■ SQLPLUSから実行する方法

この方法は、実際には、SQLの実行をしていない

SQL> explain plan for
  2  SELECT
  3  /*+
  4  LEADING (TRAN_SALE M_CUSTOMER M_ITEM)
  5  USE_HASH(M_CUSTOMER M_ITEM)
  6  */
  7  * FROM TRAN_SALE
  8  LEFT JOIN M_CUSTOMER
  9  ON M_CUSTOMER.CUSTOMER_ID = TRAN_SALE.CUSTOMER_ID
 10  LEFT JOIN M_ITEM
 11  ON M_ITEM.ITEM_CD = TRAN_SALE.ITEM_CD
 12  /

解析されました。

SQL> @?/rdbms/admin/utlxpls

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------

Plan hash value: 1200702256

------------------------------------------------------------------------------------
| Id  | Operation             | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |            | 10000 |   712K|    33   (7)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT OUTER|            | 10000 |   712K|    33   (7)| 00:00:01 |
|   2 |   TABLE ACCESS FULL   | M_ITEM     | 10000 |   312K|    13   (0)| 00:00:01 |
|*  3 |   HASH JOIN OUTER     |            | 10000 |   400K|    19   (6)| 00:00:01 |
|   4 |    TABLE ACCESS FULL  | TRAN_SALE  | 10000 |   263K|     9   (0)| 00:00:01 |
|   5 |    TABLE ACCESS FULL  | M_CUSTOMER | 10000 |   136K|     9   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("M_ITEM"."ITEM_CD"(+)="TRAN_SALE"."ITEM_CD")
   3 - access("M_CUSTOMER"."CUSTOMER_ID"(+)="TRAN_SALE"."CUSTOMER_ID")

Note
-----
   - dynamic sampling used for this statement

22行が選択されました。

ORACLEが実装されているサーバのSQLPLUS上で実行する必要がある。
クライアントのSQLPLUSでは、@?/rdbms/admin/utlxplsが登録されていない可能性がある。