首頁  >  文章  >  資料庫  >  一起聊聊Oracle怎樣查詢執行計劃

一起聊聊Oracle怎樣查詢執行計劃

WBOY
WBOY轉載
2022-05-05 19:10:144208瀏覽

這篇文章為大家帶來了關於Oracle的相關知識,其中主要介紹了關於查詢執行計劃的相關內容,執行計劃也叫查詢計劃,是資料庫執行SQL語句的具體步驟和過程,下面一起來看一下,希望對大家有幫助。

一起聊聊Oracle怎樣查詢執行計劃

推薦教學:《Oracle影片教學

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

  • 存取表的方式。資料庫透過索引或全表掃描等方式存取表中的資料。

  • 多表連接的方式。資料庫使用什麼連接演算法實現表的連接,包括多個表的先後存取順序。

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

雖然不同資料庫對於SQL查詢的執行過程採用了不同的實作方式,但是一個查詢語句大致需要經過分析器、最佳化器以及執行器的處理並傳回最終結果,同時也可能利用各種快取來提高存取效能。

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

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

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

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

#在這個情況下,所有的資料庫管理系統都會傳回一個語法錯誤。

然後,最佳化器會利用資料庫收集到的統計資料決定SQL語句的最佳執行方式。例如,是透過索引還是透過全表掃描的方式存取單一表,使用什麼順序連接多個表,如何實現資料的排序等。

優化器是決定查詢效能的關鍵元件,而資料庫的統計資料是最佳化器判斷的基礎。

最後,執行器根據最佳化之後的執行計劃呼叫對應的執行模組來取得數據,並將結果傳回客戶端。

執行計劃的檢視方式

方法一:語句查看

在Oracle資料庫中,我們同樣可以使用EXPLAIN PLAN FOR指令產生執行計劃,不過需要執行兩個指令:

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資料庫開發工具PL/SQL中,選擇一段SQL腳本,按F5鍵,即可自動顯示該腳本的執行計劃訊息,跟方法一查詢出的結果相同。

執行過程分析

參考下面文章:

在Oracle資料庫中,我們可以透過系統表user_indexes和user_ind_columns查詢索引以及相關的欄位資訊。

SELECT * FROM  user_indexes;

SELECT * FROM  user_ind_columns;

推薦教學:《Oracle影片教學

以上是一起聊聊Oracle怎樣查詢執行計劃的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除