EXPLAIN PLAN FOR 〜 でSQLの実行計画を出力
EXPLAIN PLAN で解析してから DBMS_XPLAN.DISPLAY で出力する。
SQL> EXPLAIN PLAN FOR 2> SELECT /*+ USE_CONCAT */ * FROM TEST_TABLE 3> WHERE ELE1 = :B1 4> OR ELE2 = :B2; SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', NULL, 'ALL')); ------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 72 | 8 | | 1 | CONCATENATION | | | | | | 2 | TABLE ACCESS BY INDEX ROWID| TEST_TABLE | 1 | 36 | 4 | |* 3 | INDEX RANGE SCAN | TEST_TABLE_I2 | 1 | | 3 | |* 4 | TABLE ACCESS BY INDEX ROWID| TEST_TABLE | 1 | 36 | 4 | |* 5 | INDEX RANGE SCAN | TEST_TABLE_I1 | 1 | | 3 | ------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("TEST_TABLE"."ELE2"=:Z) 4 - filter(LNNVL("TEST_TABLE"."ELE2"=:Z)) 5 - access("TEST_TABLE"."ELE1"=:Z)
SQLトレースと違って sqlplus だけで完結するので便利。
AUTOTRACE でも同じものが出せるけど、↑の方法は SQL を実行しない。