在發現一個語句的執行計划有異常的時候,通常會生成一個sqlrpt看看使用的執行計划是否正確,如何來判斷執行計划是否正確,將通過以下幾個步驟來判斷:
1.先查看sql語句的結構,看語句中連接是union,還是等值連接還是左、右連接,再看連接中的表數量。
2.查看執行計划中出現異常的部分。
3.查看各表的索引情況及表是否是分區的,在where條件上使用的索引列是否正確,看統計分析表中對表的分析結果是否正確
4.分析表的用途,表的數據日增長量。
5.分析為什么會出現異常的執行計划。
跟蹤執行計划的方法:
(1) set autotrace on explain 只顯示查詢結果和執行計划
set autotrace on statistic 只顯示查詢結果統計信息
set autotrace on 顯示前兩者
set autotrace traceonly 不顯示查詢結果,只顯示執行計划和統計信息
set autotrace off 關閉跟蹤
要使用autotrace,必須在sqlplus里面使用,且使用的是sys用戶。
(2)可以使用explain plan for select * from c_cons 可以解析執行計划,然后通過select * from table(dbms_xplain.display(null,null,’outline’,null));來顯示執行計划。
(3)使用工具Toad for oracle使用sql_id來生成執行計划