一、Oracle執行計劃的使用
當一段查詢sql執行特別慢的時候,需要對其進行優化,此時藉助PLSQL DEVELOPER工具,查看sql的執行計劃,所有問題一目瞭然。這裏只是舉個簡單的例子,如何讀懂執行計劃,可以參考博文:
https://www.cnblogs.com/xqzt/p/4467867.html
https://blog.csdn.net/xybelieve1990/article/details/50562963
1.1方式一
如何進入執行計劃的頁面?可以選中要執行的sql,然後單擊工具欄上的按鈕(如下圖),也可以選中要執行的sql,按F5。
數據準備:表order_detail_info,該表中約有40萬測試數據,其中列register_id是有索引的。然後演示一下,執行以下sql,進入解釋計劃窗口頁面。
select * from order_detail_info o2 where o2.register_id like '%577094'
Table_access_full代表全表掃描。通過執行計劃的描述和耗時,可以分析得知like‘%_’的查詢條件使register_id的索引失效,所以耗費資源較大。再來比較一下使用到索引的執行計劃情況。
select * from order_detail_info o2 where o2.register_id='437577094';
index_range_scan:索引範圍掃描。通過描述和耗費可知,該查詢是使用到了索引,耗費資源少了很多。
1.2方式二
也可以通過sql語句的方式查看執行計劃,語法爲:
explain plan for 要執行的sql;
select * from table(DBMS_XPLAN.display);
還是採用先前的sql進行測試,在sql窗口執行以下sql,可以在輸出窗口看到執行計劃。
explain plan for select * from order_detail_info o2 where o2.register_id like '%577094';
select * from table(DBMS_XPLAN.display);
同樣有索引的sql執行計劃如下,可以對比查看:
explain plan for select * from order_detail_info o2 where o2.register_id='437577094';
select * from table(DBMS_XPLAN.display);
二、根據關鍵字搜索相關存儲過程的sql寫法
SELECT * FROM ALL_SOURCE where TYPE='PROCEDURE' AND TEXT LIKE '%'||upper('第一步')||'%';
三、。。。。。
待補充。。。。