Explain Plan For SQL
不實際執行SQL語句,生成的計劃未必是真實執行的計劃
必需要有plan_tablehtml
SQLPLUS AUTOTRACE
除set autotrace traceonly explain外均實際執行SQL,但仍未必是真實計劃
必需要有plan_tablesql
SQL TRACE
須要啓用10046戒者SQL_TRACE
通常用tkprof看的更清楚些,固然10046裏自己也有執行計劃信息緩存
V$SQL和V$SQL_PLAN
能夠查詢到多個子遊標的計劃信息了,可是看起來比較費勁session
Enterprise Manager
能夠圖形化顯示執行計劃,但並不是全部環境有EM可用oracle
其餘第三方工具
注意 PL/SQL developer之類工具F5看到的執行計劃未必是真實的app
select * from table(dbms_xplan….);工具
dbms_xplan.display()this
數據來源是Plan Tablecode
dbms_xplan.display_cursororm
數據來源是Shared pool中的遊標緩存
FUNCTION DISPLAY_CURSOR RETURNS DBMS_XPLAN_TYPE_TABLE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SQL_ID VARCHAR2 IN DEFAULT CURSOR_CHILD_NO NUMBER(38) IN DEFAULT FORMAT VARCHAR2 IN DEFAULT
推薦的使用參數爲:
select * from table(dbms_xplan.display_cursor('sqlId',null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));
若是sqlId爲NULL,則顯示當前session的執行計劃。
select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));
其中format的解釋以下:
IOSTATS: Assuming that basic plan statistics are --- collected when SQL statements are executed (either by --- using the gather_plan_statistics hint or by setting the --- parameter statistics_level to ALL), this format will show --- IO statistics for all (or only for the last as shown below) --- executions of the cursor. --- --- MEMSTATS: Assuming that PGA memory management is enabled (i.e --- pga_aggregate_target parameter is set to a non 0 value), --- this format allows to display memory management --- statistics (e.g. execution mode of the operator, how --- much memory was used, number of bytes spilled to --- disk, ...). These statistics only apply to memory --- intensive operations like hash-joins, sort or some bitmap --- operators. --- --- ROWSTATS: Assuming that basic plan statistics are --- collected when SQL statements are executed (either by --- using the gather_plan_statistics hint or by setting the --- parameter statistics_level to ALL), this format will show --- row count statistics for all (or only for the last as --- shown below) executions of the cursor. --- --- ALLSTATS: A shortcut for 'IOSTATS MEMSTATS ROWSTATS' --- --- LAST: By default, plan statistics are shown for all executions of --- the cursor. The keyword LAST can be specified to see only --- the statistics for the last execution. --- --- PEEKED_BINDS:顯示解析時使用的綁定變量。
dbms_xplan.display_awr
數據來源是AWR倉庫基表WRH$_SQL_PLAN
FUNCTION DISPLAY_AWR RETURNS DBMS_XPLAN_TYPE_TABLE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SQL_ID VARCHAR2 IN PLAN_HASH_VALUE NUMBER(38) IN DEFAULT DB_ID NUMBER(38) IN DEFAULT FORMAT VARCHAR2 IN DEFAULT CON_ID NUMBER(38) IN DEFAULT
dbms_xplan.display_sqlset
數據來源是SQL Set視圖
以上內容主要整理自maclean的oracle執行計劃教學視頻和ppt: www.askmaclean.com/archives/read-sql-execution-plan.html