欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle查詢執(zhí)行計(jì)劃

 更新時(shí)間:2023年04月03日 16:45:50   作者:梁萌  
執(zhí)行計(jì)劃(Execution Plan)也叫查詢計(jì)劃(Query Plan),它是數(shù)據(jù)庫執(zhí)行SQL語句的具體步驟和過程。本文主要介紹了Oracle查詢執(zhí)行計(jì)劃方法,感興趣的同學(xué)可以參考閱讀

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

● 訪問表的方式。數(shù)據(jù)庫通過索引或全表掃描等方式訪問表中的數(shù)據(jù)。
● 多表連接的方式。數(shù)據(jù)庫使用什么連接算法實(shí)現(xiàn)表的連接,包括多個(gè)表的先后訪問順序。
● 分組聚合以及排序等操作的實(shí)現(xiàn)方式。

雖然不同數(shù)據(jù)庫對(duì)于SQL查詢的執(zhí)行過程采用了不同的實(shí)現(xiàn)方式,但是一個(gè)查詢語句大致需要經(jīng)過分析器、優(yōu)化器以及執(zhí)行器的處理并返回最終結(jié)果,同時(shí)還可能利用各種緩存來提高訪問性能。

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

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

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

例如,以下語句中的FROM關(guān)鍵字錯(cuò)寫成了FORM:

在這種情況下,所有的數(shù)據(jù)庫管理系統(tǒng)都會(huì)返回一個(gè)語法錯(cuò)誤。

然后,優(yōu)化器會(huì)利用數(shù)據(jù)庫收集到的統(tǒng)計(jì)信息決定SQL語句的最佳執(zhí)行方式。例如,是通過索引還是通過全表掃描的方式訪問單個(gè)表,使用什么順序連接多個(gè)表,如何實(shí)現(xiàn)數(shù)據(jù)的排序等。

優(yōu)化器是決定查詢性能的關(guān)鍵組件,而數(shù)據(jù)庫的統(tǒng)計(jì)信息是優(yōu)化器判斷的基礎(chǔ)。

最后,執(zhí)行器根據(jù)優(yōu)化之后的執(zhí)行計(jì)劃調(diào)用相應(yīng)的執(zhí)行模塊來獲取數(shù)據(jù),并將結(jié)果返回客戶端。

執(zhí)行計(jì)劃的查看方式

方法一:語句查看

在Oracle數(shù)據(jù)庫中,我們同樣可以使用EXPLAIN PLAN FOR命令生成執(zhí)行計(jì)劃,不過需要執(zhí)行兩條命令:

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

使用EXPLAIN PLAN FOR命令生成執(zhí)行計(jì)劃,并將其存儲(chǔ)到系統(tǒng)表PLAN_TABLE中,然后通過一個(gè)查詢語句顯示生成的執(zhí)行計(jì)劃。

其中dbms_xplan.display是一個(gè)Oracle系統(tǒng)函數(shù)。返回的結(jié)果顯示,該語句在Oracle中是通過'SYS_C0016771'索引范圍掃描來查找數(shù)據(jù)的。

方法二:利用工具查看

在常用的Oracle數(shù)據(jù)庫開發(fā)工具PL/SQL中,選擇一段SQL腳本,按F5鍵,即可自動(dòng)顯示該腳本的執(zhí)行計(jì)劃信息,跟方法一查詢出的結(jié)果相同。

在Oracle數(shù)據(jù)庫中,我們可以通過系統(tǒng)表user_indexes和user_ind_columns查詢索引以及相關(guān)的字段信息。

SELECT * FROM  user_indexes;
 
SELECT * FROM  user_ind_columns;

到此這篇關(guān)于Oracle查詢執(zhí)行計(jì)劃的文章就介紹到這了,更多相關(guān)Oracle查詢執(zhí)行計(jì)劃內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論