実行計画の採取方法
■ 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が登録されていない可能性がある。