這篇文章為大家帶來了關於Oracle的相關知識,其中主要介紹了關於查詢執行計劃的相關內容,它是資料庫執行SQL語句的具體步驟和過程,下面一起來看一下,希望對大家有幫助。
推薦教學:《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中文網其他相關文章!