歸納總結Oracle查詢執行計劃

本篇文章給大家帶來了關于oracle的相關知識,其中主要介紹了關于查詢執行計劃的相關內容,它是數據庫執行sql語句的具體步驟和過程,下面一起來看一下,希望對大家有幫助。

歸納總結Oracle查詢執行計劃

推薦教程:《oracle

執行計劃(Execution Plan)也叫查詢計劃(Query Plan),它是數據庫執行SQL語句的具體步驟和過程。SQL查詢語句的執行計劃主要包括:

  • 訪問表的方式。數據庫通過索引或全表掃描等方式訪問表中的數據。

  • 多表連接的方式。數據庫使用什么連接算法實現表的連接,包括多個表的先后訪問順序。

  • 分組聚合以及排序等操作的實現方式。

雖然不同數據庫對于SQL查詢的執行過程采用了不同的實現方式,但是一個查詢語句大致需要經過分析器、優化器以及執行器的處理并返回最終結果,同時還可能利用各種緩存來提高訪問性能。

簡單來說,一個查詢語句從客戶端的提交開始,直到服務器返回最終的結果,整個過程大致如圖所示。

歸納總結Oracle查詢執行計劃

首先,客戶端提交SQL語句。在此之前客戶端必須連接到數據庫服務器,圖中的連接器就是負責建立和管理客戶端連接的組件。

然后,分析器(解析器)解析SQL語句的各個組成部分,進行語法分析,并檢查SQL語句的語法是否符合規范。

例如,以下語句中的FROM關鍵字錯寫成了FORM:

歸納總結Oracle查詢執行計劃

在這種情況下,所有的數據庫管理系統都會返回一個語法錯誤。

然后,優化器會利用數據庫收集到的統計信息決定SQL語句的最佳執行方式。例如,是通過索引還是通過全表掃描的方式訪問單個表,使用什么順序連接多個表,如何實現數據的排序等。

優化器是決定查詢性能的關鍵組件,而數據庫的統計信息是優化器判斷的基礎。

最后,執行器根據優化之后的執行計劃調用相應的執行模塊來獲取數據,并將結果返回客戶端。

執行計劃的查看方式

方法一:語句查看

oracle數據庫中,我們同樣可以使用EXPLAIN PLAN FOR命令生成執行計劃,不過需要執行兩條命令:

歸納總結Oracle查詢執行計劃

EXPLAIN PLAN FOR  SELECT * FROM  T_USER1 t where t.user_name = 'Admin';  SELECT * FROM  TABLE(dbms_xplan.display);

使用EXPLAIN PLAN FOR命令生成執行計劃,并將其存儲到系統表PLAN_TABLE中,然后通過一個查詢語句顯示生成的執行計劃。

其中dbms_xplan.display是一個Oracle系統函數。返回的結果顯示,該語句在Oracle中是通過’SYS_C0016771’索引范圍掃描來查找數據的。

歸納總結Oracle查詢執行計劃

方法二:利用工具查看

在常用的Oracle數據庫開發工具PL/SQL中,選擇一段SQL腳本,按F5鍵,即可自動顯示該腳本的執行計劃信息,跟方法一查詢出的結果相同。

歸納總結Oracle查詢執行計劃

執行過程分析

在Oracle數據庫中,我們可以通過系統表user_indexes和user_ind_columns查詢索引以及相關的字段信息。

SELECT * FROM  user_indexes;  SELECT * FROM  user_ind_columns;

推薦教程:《oracle

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享