oracle sql語句分析explain explan
EXPLAIN PLAN 是一個很好的分析SQL 語句的工具,它甚至可以在不執行SQL 的情況下分
析語句. 通過分析,我們就可以知道ORACLE 是怎麼樣連線表,使用什麼方式掃描表(索引掃描或全
表掃描)以及使用到的索引名稱.
你需要按照從裡到外,從上到下的次序解讀分析的結果. EXPLAIN PLAN 分析的結果是用縮
進的格式排列的, 最內部的操作將被最先解讀, 如果兩個操作處於同一層中,帶有最小操作號的將
被首先執行.
1,安裝
以sys使用者執行建立指令碼,指令碼位於$ORACLE_HOME/rdbms/admin/utlxplan.sql。
執行的方法,cp $ORACLE_HOME/rdbms/admin/utlxplan.sql /home/utlxplan.sql
進入資料庫中執行:@/home/utlxplan.sql
執行完之後,資料庫中會有個plan的表,用來儲存分析的資訊。
2,使用
語法:
explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ]
FOR < sql_statement >
其中:
STATEMENT_ID:是一個唯一的字串,把當前執行計劃與儲存在同一PLAN中的其它執行計劃區別開來。
TABLE_NAME:是plan表名,它結構如前所示,你可以任意設定這個名稱。
SQL_STATEMENT:是真正的要分析的SQL語句
例如:
explain plan set statement_id='T_TEST' for select * from t;
分析:
SQL>SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID
2 FROM
PLAN_TABLE a
3 WHERE STATEMENT_ID='T_TEST'
4 ORDER BY Id;
grant all on plan_table to public;#授權所有使用者
為了在sql*plus中使用autotrace。需要執行一下操作:
要在資料庫中建立一個角色
方法通ultxplain.sql一樣。
授權:將plustrace的許可權授予需要autotrace的使用者
grant plustruce to public;
啟動關閉autotrace:
set autotrace on/off;
只顯示執行計劃
set autotrace on explain;
只顯示統計資訊:
set autotrace on statistics;
顯示執行計劃,遮蔽執行結果;
set autotrace on traceonly;
僅僅顯示執行計劃,遮蔽執行結果:
set autotrace on traceonly explain;