日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dbms_xplan.display_cursor 获取执行过的sql的执行计划

發布時間:2024/8/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dbms_xplan.display_cursor 获取执行过的sql的执行计划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
該函數的語法:
DBMS_XPLAN.DISPLAY_CURSOR(
?? sql_id??????? IN VARCHAR2 DEFAULT NULL,
?? child_number IN NUMBER??? DEFAULT NULL,
?? format??????? IN VARCHAR2 DEFAULT 'TYPICAL');

舉個例子 執行一個簡單查詢:
SQL> select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id;

COUNT(0)
----------
??? 118908

如果我們想獲取該語句的實際執行計劃,通過下列步驟:

1、查詢v$sql視圖,找到該語句的sql_id(注意喲,必須要確保你要查詢的sql語句還在shared pool):
SQL> select sql_id from v$sql where sql_text=
2 'select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id';

SQL_ID
-------------
c9cxqvr3q4tjd

2、調用dbms_xplan包,查看該語句執行時的實現執行計劃:
SQL>?select * from table(dbms_xplan.display_cursor('c9cxqvr3q4tjd'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID c9cxqvr3q4tjd, child number 0
-------------------------------------
select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id

Plan hash value: 2559475106

-----------------------------------------------------------------------------------------------------------
| Id | Operation????????????? | Name???????????????????? | Rows | Bytes |TempSpc| Cost (%CPU)| Time???? |
-----------------------------------------------------------------------------------------------------------
......

事實上dbms_xplan.display_cursor也非常靈活,如果執行的統計信息也被收集的話,還可以顯示出每一步實際的花費時間等信息,例如:

SQL> select?/*+gather_plan_statistics*/?count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id;

COUNT(0)
----------
??? 118908

--簡單獲取,不需要sqlid

select ?*? from ? table ( dbms_xplan . display_cursor ( null , null , ' ALLSTATS LAST ' )) ;

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 91w1ug6vc9pxh, child number 0
-------------------------------------
select /*+gather_plan_statistics*/ count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id

Plan hash value: 2559475106

-----------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation????????????? | Name???????????????????? | Starts | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time?? | A-Rows |?? A-Time?? | Buffers |
-----------------------------------------------------------------------------------------------------------------------------------------------------
...

E-Rows是優化器評估的行數,A-Rows是實際的行數,這個對于判斷優化器的選擇正確與否比較有用!

總結

以上是生活随笔為你收集整理的dbms_xplan.display_cursor 获取执行过的sql的执行计划的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。