S-JIS[2007-12-30/2010-10-23] 変更履歴

Oracle実行計画


OracleSQL


PLAN_TABLE [2008-02-06]

EXPLAIN [2008-02-06]

autotrace

 [/2010-10-23]


使 [2008-04-29]

PLAN_TABLE


PLAN_TABLE[2008-02-06]

> cd C:\oracle\ora92\rdbms\admin
> sqlplus scott/tiger @utlxplan.sql
> sqlplus scott/tiger
SQL> @ ?\rdbms\admin\utlxplan.sql

create table  PLAN_TABLEPLAN_TABLEdrop

EXPLAIN PLAN FOR


EXPLAIN PLAN FOR SQL;SQL[2008-02-06]
SQL> explain plan for
  2   select * from emp;
 select * from emp
               *
行2でエラーが発生しました。:
ORA-02402: PLAN_TABLE表が見つかりません。

PLAN_TABLE
PLAN_TABLE

SQL> explain plan for
  2   select * from emp;

解析されました。

!?PostgreSQL便

PLAN_TABLE
utlxplp.sql
SQL> @ ?/rdbms/admin/utlxplp.sql

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

--------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
--------------------------------------------------------------------
|   0 | SELECT STATEMENT     |             |       |       |       |
|   1 |  TABLE ACCESS FULL   | EMP         |       |       |       |
--------------------------------------------------------------------

Note: rule based optimization

9行が選択されました。

SQLPL/SQL
SQL> select * from table(dbms_xplan.display());

autotrace


SQL*PlusautotraceONTRACEONLYSQL
SQL> set autotrace on
SP2-0613: PLAN_TABLEの形式または存在を検証できません。
SP2-0611: EXPLAINレポートを使用可能にするときにエラーが発生しました。
SP2-0618: セッション識別子が見つかりません。PLUSTRACEロールが使用可能かを確認してください。
SP2-0611: STATISTICSレポートを使用可能にするときにエラーが発生しました。

使PLAN_TABLE
PLAN_TABLE

PLUSTRACEexplain

SQL> set autotrace on explain        …ONは、SQLの実行結果の表示後に実行計画を表示する。
SQL> set autot     on exp            …短縮形
SQL> set autotrace traceonly explain …TRACEONLYは、実行計画のみを表示する。
SQL> set autot     trace     exp     …短縮形
SQL> set autot trace exp
SQL> select * from emp;

実行計画
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'EMP'


DBMS_STATS使[2008-10-04]
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP')

user_tablesuser_indexesLAST_ANALYZED[2010-07-20]
SQL> select LAST_ANALYZED from user_tables where table_name='EMP';


Oracle10g[2010-10-23]

 archive-redo-blogOracleOK



Oracle10gSQL*Plus

Oracle10g


SQL / Oracle /  /