SQL語句進行最佳化的話需要知道其執行計畫,從而針對性的進行調整.ORACLE的執行計畫的獲得有幾種方法,下面就來總結下 1、EXPLAIN的使用
Oracle RDBMS執行每一條SQL語句,都必須經過Oracle最佳化器的評估。所以,瞭解最佳化器是如何選擇(搜尋)路徑以及索引是如何被使用的,對最佳化SQL語 句有很大的協助。Explain可以用來迅速方便地查出對於給定SQL語句中的查詢資料是如何得到的即搜尋路徑(我們通常稱為Access Path)。從而使我們選擇最優的查詢方式達到最大的最佳化效果。
1.1 、安 裝
要使用EXPLAIN首先要執行相應的指令碼,建立出Explain_plan表。
具體指令碼執行如下:
$ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX) 該指令碼後會產生一個表這個程式會建立一個名為plan_table的表。
1.2 、使用
常規使用文法:
explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ]
FOR < sql_statement >
其中:
STATEMENT_ID:是一個唯一的字串,把當前執行計畫與儲存在同一PLAN中的其它執行計畫區別開來。
TABLE_NAME:是plan表名,它結構如前所示,你可以任意設定這個名稱。
SQL_STATEMENT:是真正的SQL語句。
比如:
SQL>explain plan set statement_id='T_TEST' for select * from t_test;
SQL>
Explained
執行下面語句可以查詢到執行計畫
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;
也可以用這句話 select * from table(dbms_xplan.display); 可以把所有PLAN_TABLE裡的資料羅列出來。
2 、AUTOTRACE的使用方法
2.1、安裝
用sys使用者運行指令碼ultxplan.sql
建立這個表的指令碼是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%/rdbms/admin)ultxplan.sql。
SQL> connect sys/sys@colm2 as sysdba;
SQL> @C:/oracle/ora92/rdbms/admin/utlxplan.sql;
SQL> create public synonym plan_table for plan_table;--建立同義字
SQL> grant all on plan_table to public;--授權所有使用者