Oracle
在 Oracle 中為 PL-SQL 語句生成“執行計劃”的正確方法
我正在
Explain plan and Execution plan
Oracle 中學習,根據我目前閱讀的內容,解釋的計劃可能與語句執行期間使用的實際計劃不同。所以我認為執行計劃比解釋計劃更有用optimization purposes
。我的問題 :
一個Sql語句,你通常如何生成執行計劃?在閱讀了不同的文章後,我現在有點困惑,因為在每篇文章中都引入了不同的方法!例如,我遇到了這個:
explain plan set statement_id = 'ex_plan1' for select phone_number from employee where phone_number like '650%'; select PLAN_TABLE_OUTPUT from table (DBMS_XPLAN.DISPLAY(STATEMENT_ID=>'ex_plan1'));
- 這是
correct way
為了製定執行計劃(不是解釋計劃)嗎?- 擁有正確執行計劃的其他方法是什麼?(
that optimizer
選擇執行語句的方法)。提前致謝
回答你的第一個問題
不,這是解釋計劃而不是執行計劃。
EXPLAIN PLAN 命令 - 顯示 SQL 語句的解釋計劃而不實際執行該語句。
回答你的第二個問題:
下面將顯示目前會話中最後執行的 SQL 的執行計劃
Select plan_table_output from table(dbms_xplan.display_cursor(null,null,'basic'));
下面將展示使用 SQL_ID 的執行計劃:
Select * from table(dbms_xplan.display_cursor('d1br5x9r1buhz',NULL,'all +predicate +cost'));
您也可以使用 V$SQL_PLAN,因為該視圖最終用於 DBMS_XPLAN 生成執行計劃
為了清楚地了解這個主題,請參考以下連結: