Oracle

在 Oracle 中為 PL-SQL 語句生成“執行計劃”的正確方法

  • July 6, 2021

我正在Explain plan and Execution planOracle 中學習,根據我目前閱讀的內容,解釋的計劃可能與語句執行期間使用的實際計劃不同。所以我認為執行計劃比解釋計劃更有用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'));
  1. 這是correct way為了製定執行計劃(不是解釋計劃)嗎?
  2. 擁有正確執行計劃的其他方法是什麼?(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 生成執行計劃

為了清楚地了解這個主題,請參考以下連結:

連結 1 連結2

引用自:https://dba.stackexchange.com/questions/295306