Oracle SQL語句分析Explain Plan

來源:互聯網
上載者:User

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。需要執行一下操作:

要在資料庫中建立一個角色plustrace,用sys使用者運行指令碼plustrce.sql來建立這個角色,這個指令碼在目錄   (UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%/sqlplus/admin)中;

方法通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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.