當前位置:首頁 » 編程語言 » 如何查看sql的執行計劃
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何查看sql的執行計劃

發布時間: 2022-09-01 12:21:12

『壹』 sql執行計劃怎麼看

首先,配置autotrace工具。
【oracle_home】代表d:\app\shadow\proct\12.1.0\dbhome_1路徑(這個是我的,你看一下自己的)。
(1)、cd
[oracle_home]/rdbms/admin

(2)、作為system登陸sql*plus
;
(3)、運行@utlxplan
;
(4)、運行
create
public
synonym
plan_table
for
plan_table
;
(5)、運行grant
all
on
plan_table
to
public
;
(如果是oracle
10g以上版本,上述步驟可省略。)
下一步是創建並授予plustrace角色:
(1)、cd
[oracle_home]/sqlplus/admin
;
(2)、作為sys或sysdba登陸sql*plus;
(3)、運行@plustrce
;
(4)、運行grant
plustrace
to
public
;
配置完成;
然後重新登陸sql*plus;
sql>set
autotrace
on
;
sql>
select
*
from
emp
;
後面顯示執行計劃…………………………略。

『貳』 oracle sql的執行計劃如何查看

方法/步驟

打開PL/SQL Developer軟體,請確保plsql能夠成功連接到一個oracle資料庫

在PL/SQL Developer中寫好一段SQL代碼,按F5,或者點擊「執行執行計劃」圖標,PL/SQL Developer會自動打開執行計劃窗口,顯示該SQL的執行計劃。

可以看到窗口上方是sql語句,下方顯示執行計劃表格。表格的列主要包含描述、用戶、對象、成本花費、IO開銷等,表格,當然表格列還可以自定義。表格的行包含了查詢邏輯的執行順序和各個步驟信息。

執行計劃表格內容的執行順序是:按照從左至右,從上至下的步驟執行,具體是指執行計劃按照層次逐步縮進,從左至右看,縮進最多的那一步最先執行,如果縮進量相同,則按照從上而下的方法判斷執行順序。

通過查看執行計劃表格的cost列,即成本花費能夠知道哪個步驟花費的成本高,通過查看執行計劃表格的行中的objectname列,能夠知道是否使用到表中的索引。
步驟閱讀
6
本文先簡單介紹在plsql中的使用方法,後續會逐步完成各種理論和技巧的使用方法,例如優化器、表連接訪問方法、索引等

『叄』 plsql怎麼查看sql執行計劃

  • 打開PL/SQL Developer軟體,請確保plsql能夠成功連接到一個oracle資料庫。

  • 通過查看執行計劃表格的cost列,即成本花費能夠知道哪個步驟花費的成本高,通過查看執行計劃表格的行中的objectname列,能夠知道是否使用到表中的索引。

『肆』 獲取SQL執行計劃的常見幾種方法

1. 預估執行計劃 - Explain Plan
Explain plan以SQL語句作為輸入,得到這條SQL語句的執行計劃,並將執行計劃輸出存儲到計劃表中。
首先,在你要執行的SQL語句前加explain plan for,此時將生成的執行計劃存儲到計劃表中,語句如下:
explain plan for SQL語句
然後,在計劃表中查詢剛剛生成的執行計劃,語句如下:
select * from table(dbms_xplan.display);
注意:Explain plan只生成執行計劃,並不會真正執行SQL語句,因此產生的執行計劃有可能不準,因為:
1)當前的環境可能和執行計劃生成時的環境不同;
2)不會考慮綁定變數的數據類型;
3)不進行變數窺視。
2. 查詢內存中緩存的執行計劃 (dbms_xplan.display_cursor)
如果你想獲取正在執行的或剛執行結束的SQL語句真實的執行計劃(即獲取library cache中的執行計劃),可以到動態性能視圖里查詢。方法如下:
1)獲取SQL語句的游標
游標分為父游標和子游標,父游標由sql_id(或聯合address和hash_value)欄位表示,子游標由child_number欄位表示。
如果SQL語句正在運行,可以從v$session中獲得它的游標信息,如:
select status, sql_id, sql_child_number from v$session where status='ACTIVE' and ....
如果知道SQL語句包含某些關鍵字,可以從v$sql視圖中獲得它的游標信息,如:
select sql_id, child_number, sql_text from v$sql where sql_text like '%關鍵字%『
2)獲取庫緩存中的執行計劃
為了獲取緩存庫中的執行計劃,可以直接查詢動態性能視圖v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是以sql_id和子游標為參數,執行如下語句:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
3)獲取前一次的執行計劃:
set serveroutput off
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
3. 查詢歷史執行計劃(dbms_xplan.display_awr)
AWR會定時把動態性能視圖中的執行計劃保存到dba_hist_sql_plan視圖中,如果你想要查看歷史執行計劃,可以採用如下方法查詢:
select * from table(dbms_xplan.display_awr('sql_id');
4. 在用sqlplus做SQL開發是(Autotrace)
set autotrace是sqlplus工具的一個功能,只能在通過sqlplus連接的session中使用,它非常適合在開發時測試SQL語句的性能,有以下幾種參數可供選擇:
SET AUTOTRACE OFF ---------------- 不顯示執行計劃和統計信息,這是預設模式
SET AUTOTRACE ON EXPLAIN ------ 只顯示優化器執行計劃
SET AUTOTRACE ON STATISTICS -- 只顯示統計信息
SET AUTOTRACE ON ----------------- 執行計劃和統計信息同時顯示
SET AUTOTRACE TRACEONLY ------ 不真正執行,只顯示預期的執行計劃,同explain plan

5. 生成Trace文件查詢詳細的執行計劃 (SQL_Trace, 10046)
SQL_TRACE作為初始化參數可以在實例級別啟用,也可以只在會話級別啟用,在實例級別啟用SQL_TRACE會導致所有進程的活動被跟蹤,包括後台進程及所有用戶進程,這通常會導致比較嚴重的性能問題,所以在一般情況下,我們使用sql_trace跟蹤當前進程,方法如下:
SQL>alter session set sql_trace=true;
...被跟蹤的SQL語句...
SQL>alter session set sql_trace=false;
如果要跟蹤其它進程,可以通過Oracle提供的系統包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION來實現,例如:
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true) --開始跟蹤
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,false) --結束跟蹤
生成trace文件後,再用tkprof 工具將sql trace 生成的跟蹤文件轉換成易讀的格式,語法如下:
tkprof inputfile outputfile
10046事件是SQL_TRACE的一個升級版,它也是追蹤會話,生成Trace文件,只是它裡面的內容更詳細,

『伍』 oracle中的sql執行計劃怎麼看

1、直接File->New->Explain Plan Window,在窗口中執行sql可以查看計劃結果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執行的行數,等價Rows。
2、先執行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執行計劃了,看到的結果和1中的一樣,所以使用工具的時候推薦使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計劃看到的信息不全,有些時候我們需要sqlplus的支持。

二、通過sqlplus
1.最簡單的辦法
Sql> set autotrace on
Sql> select * from al;
執行完語句後,會顯示explain plan 與 統計信息。
這個語句的優點就是它的缺點,這樣在用該方法查看執行時間較長的sql語句時,需要等待該語句執行成功後,才返回執行計劃,使優化的周期大大增長。如果不想執行語句而只是想得到執行計劃可以採用:
Sql> set autotrace traceonly

『陸』 sql server怎麼查看執行計劃

方法/步驟

首先先建一個查詢的窗口中,選中資料庫,點擊新建查詢。

彈出了一個新建查詢的窗口的界面中,輸入需要執行的sql的語句。

sql輸入完成之後,選中需要的執行的sql的語句。

然後進行點擊菜單中的查詢的按鈕選項。

可以彈出下拉菜單中,進行選擇為顯示估計的執行計劃。

在執行窗口的界面中查看的執行計劃執行的內容了。

『柒』 如何通過navicat查看sql的執行計劃

如何通過navicat查看sql的執行計劃
1、直接File->New->Explain Plan Window,在窗口中執行sql可以查看計劃結果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執行的行數,等價Rows。
2、先執行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執行計劃了,看到的結果和1中的一樣,所以使用工具的時候推薦使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計劃看到的信息不全,有些時候我們需要sqlplus的支持。