一般獲取執行計畫有四種途徑:1、執行explain plan,查詢結果輸出表。2、查詢動態效能檢視,它顯示快取在庫快取中的執行計畫(有時查不出結果是因為執行計畫已經不在庫快取中)。3、查詢awr或statspack表。4、啟動提供執行計畫的跟蹤功能(set autotrace trace explain)。使用得比較多的是第四種,簡單又好用~本篇講第一種方法。
首先,explainplan原理就是把一條sql語句分析一下,將該語句的執行計畫和相關資訊儲存到計畫表(plan table)中。可以檢視一下聯機文件關於explain plan的語法,
這裡的string是用於區分計畫表中多個執行計畫的,into後面的table就是「計畫表」。一般的使用方法是explain plan for 「sql text」;之後select * fromtable(dbms_xplan.display);有時出現這種情況,explain plan for insert into test select * from test; 此時任何事務並無變化,因為explainplan是dml語句,不會對當前事務隱式提交,僅僅是插入幾條記錄到計畫表。
我們會把執行計畫與相關資訊存入計畫表,預設計畫表是sys下的一張表,但有乙個plan_table公共同義詞,當你想使用乙個私有的計畫表時,可以執行utlxplan.sql指令碼。
當分析的sql語句有繫結變數時,一般使用繫結變數進行explain for,而不是使用幾個常量代入繫結變數進行分析。在explain for使用繫結變數也有兩個問題。第一,預設情況下繫結變數是varchar2型別,所以在執行計畫access中會有乙個顯式型別轉換;第二,不能使用bind peeking。
dbms xplan包 獲取執行計畫
table name 包含執行計畫的計畫表的名稱,預設為plan table。statement id 在執行explain plan時通過statement id引數指定的執行計畫的唯一識別符號。如果不指定,則展示最近生成的執行計畫。format 一組控制格式的關鍵字。它們包括高階的關鍵字basi...
如何獲取真實的執行計畫
驗證 explain plan 命令 與 set autotrace 命令 是否為真實執行計畫 0 conn as sysdba 1 create table t1 as select from dba objects 2 insert into t1 select from t1 3 commit...
sql優化之獲取執行計畫
獲取執行計畫的方法 1,執行sql語句的explain plan,查詢結果輸出表 explain for statement 需要statement涉及到的基礎表和檢視的訪問許可權 可以用dbms xplan.display查詢執行計畫表 2,查詢動態效能檢視 v sql plan和v sql pl...