実行計画を調べる(Oracle編)
- [Database]
Oracleの場合はPLAN_TABLEをあらかじめ作っておく必要があります。
C:\>cd %ORACLE_HOME%\rdbmsxx\admin C:\...\admin>sqlplus sys/oracle@mylisner SQL*Plus: Release 9.2.0.1.0 - Production on 金 Sep 26 11:14:17 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL>@utlxplan.sql . . SQL>GRANT SELECT ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT INSERT ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT UPDATE ON SYS.PLAN_TABLE TO PUBLIC; SQL>GRANT DELETE ON SYS.PLAN_TABLE TO PUBLIC; SQL>CREATE PUBLIC SYNONYM PLAN_TABLE FOR SYS.PLAN_TABLE; SQL>実際に実行計画を取得するのは以下のようにします。
/* 実行計画をPLAN_TABLEに取得します */ TRUNCATE PLAN_TABLE; EXPLAIN PLAN SET STATEMENT_ID='PLANTEST' FOR -- コマンドの構文(文頭部) SELECT e.empno, e.ename, d.dname FROM scott.emp e, scott.dept d WHERE e.deptno=d.deptno; -- ターゲットSQL文 /* テーブルの中身を整形して表示します。 */ SELECT DECODE(id,0,'', LPAD(' ',3*(level-1))||level||'.'||position)||' '||operation||' '||options||' '||object_name||' '|| object_type||' '||DECODE(id,0,'Cost = '||position) QUERY FROM plan_table CONNECT BY PRIOR id = parent_id AND statement_id = 'PLANTEST' START WITH id = 0 AND statement_id = 'PLANTEST';
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/52
コメント