天天看點

執行計劃 - EXPLAIN PLAN産生的操作和選項值

AND-EQUAL . 接受多組rowid的操作,傳回集合的交集,消除重複。用于在單列索引通路路徑。
BITMAP CONVERSION

TO ROWIDS:轉換位圖表示為的可用于通路表的實際rowid。

FROM ROWIDS:轉換rowids為位圖表示。

COUNT:如不需要實際值,傳回ROWIDs數量。

BITMAP INDEX

SINGLE VALUE:查找索引中單個鍵值的位圖。

RANGE SCAN:檢索鍵值範圍内的位圖。

FULL SCAN:若無開始和停止鍵值,則執行全位圖索引掃描。

BITMAP MERGE 合并範圍掃描生成的幾個位圖為一個位圖。
BITMAP MINUS 從另一個位圖減去一個位圖的比特(bits)。源行用于否定謂詞。僅用于:如有非否定謂詞,通過減法産生一個位圖。例子見:“檢視位圖索引與解釋計劃” 。
BITMAP OR 計算兩個位圖的按位OR。
BITMAP AND 計算兩個位圖的按位AND。
BITMAP KEY ITERATION 從表行源中擷取每一行,并從位圖索引中找到對應的位圖。然後,這一組位圖在後續的BITMAP MERGE操作中被合并成一個位圖。
CONNECT BY . 在包含CONNECT BY子句的查詢中以等級次序檢索資料行
CONCATENATION . 接受多組套行的操作,傳回資料集的 union-all
COUNT . 計數從表中選擇行數的操作
STOPKEY 計數操作,傳回的行數是由WHERE子句中的ROWNUM表達式限定
DOMAIN INDEX . 從域索引中檢索一或多個ROWID。選項??列中包含使用者定義的域索引成本函數所提供的資訊,如果有的話
FILTER 接受一組行的操作,消除其中的一部分,并傳回其餘
FIRST ROW . 檢索查詢標明的第一行
FOR UPDATE . 檢索和鎖定由包含FOR UPDATE子句的查詢標明行的操作

HASH JOIN

(包含連接配接操作。)

.

連結兩組行的操作,并傳回結果。此連接配接的方法對連接配接大量資料的資料集(DSS,BAtch)非常有用。連接配接條件是通路第二個表的有效方式。

CBO使用較小的兩個表/資料源在記憶體中建立基于連接配接鍵的一個哈希表;然後,它會掃描較大的表,探測哈希表從中找到連接配接的行。

HASH JOIN ANTI Hash反連接配接。
HASH JOIN SEMI Hash半連接配接。

INDEX

(包含通路方法)

UNIQUE SCAN 從索引檢索單個ROWID。
INDEX RANGE SCAN 檢索一個或多個索引的ROWIDs。索引值升序的掃描。
INDEX RANGE SCAN DESCENDING 檢索一個或多個索引的ROWIDs。降序索引值掃描。
INDEX FULL SCAN 沒有啟動或停止鍵時從索引檢索所有的ROWIDs。升序索引值掃描。
INDEX FULL SCAN DESCENDING 沒有啟動或停止鍵時從索引檢索所有的ROWIDs降序索引值掃描。
INDEX FAST FULL SCAN 使用多塊讀取,檢索所有ROWIDs(和列值)。不定義排序順序。僅在索引列全表掃描比較。僅适于基于成本的優化器。
INDEX SKIP SCAN 不使用索引的前導列從連接配接索引中檢索ROWID。Oracle9i中引入。僅适于基于成本的優化器
INLIST ITERATOR . 對IN清單謂詞的每個值疊代計劃中的下一操作
INTERSECTION . 接受兩組行的操作,并傳回集合的交集,消除重複

MERGE JOIN

(含連接配接操作)

. 接受兩組行的操作,每一按特定值排序,從一組中的每一行合并另一組的比對行,并傳回結果
MERGE JOIN OUTER 執行OUTER JOIN語句的合并聯接操作
MERGE JOIN ANTI 反連接配接合并
MERGE JOIN SEMI 半連接配接合并
MERGE JOIN CARTESIAN 可生成1個或多個聲明中與任何其它表沒有任何連接配接條件的表。偶可發生在連接配接時,計劃中也未必标記CARTESIAN
CONNECT BY . 從包含CONNECT BY子的查詢中以等級次序檢索行
MINUS . 接受兩組行的操作,并傳回第一組有但第二組無的行,消除重複行

NESTED LOOPS

(含連接配接操作)

. 接受兩組行的操作,一組外部的和一組内部的。Oracle将内集的每一行與外集的每一行作比較,傳回滿足條件的行。此連接配接的方法對連接配接小的資料子集(OLTP)非常有用。連接配接條件是通路第二個表的有效方式。
NESTED LOOPS OUTER 執行外部聯接語句的嵌套循環操作
PARTITION SINGLE 通路一個分區
PARTITION ITERATOR 通路多少個分區(子集)
PARTITION ALL 通路所有分區
PARTITION INLIST 類似疊代器,但基于一IN清單謂詞(IN-list predicate)
PARTITION INVALID 表示要通路的分區集為空
對于PARTITION_START和PARTITION_STOP列中給定範圍的麼意義分區(PARTITION)疊代計劃中的下一操作。PARTITION描述适用于單獨分區對象(表或索引)或等距分割的對象(分區表及其本地索引)的分區邊界。分區邊界由分區(PARTITION)的PARTITION_START 和 PARTITION_STOP值提供。請參閱參分區start/stop有效值
REMOTE . 從遠端資料庫中檢索資料
SEQUENCE . 涉及通路序列值的操作
SORT AGGREGATE 從一分組函數作用于一組標明行的結果中,檢索單個行
SORT UNIQUE 排序一組行的操作,消除重複。
SORT GROUP BY 對帶有GROUP BY子句的查詢的行分組操作
SORT JOIN 合并-連接配接前排序一組行的操作
SORT ORDER BY 對帶有ORDER BY子句的查詢的行排序操作

TABLE ACCESS

(含通路方法)

FULL 檢索表中的所有行
TABLE ACCESS SAMPLE 從一表中檢索樣本行
TABLE ACCESS CLUSTER 檢索從基于索引簇鍵的值表的行
TABLE ACCESS HASH 基于索引的簇鍵值檢索表中的行
TABLE ACCESS BY ROWID RANGE 基于rowid範圍檢索表中的行
TABLE ACCESS SAMPLE BY ROWID RANGE 基于rowid範圍檢索表中的樣本行
TABLE ACCESS BY USER ROWID 如果表中的行由使用者提供的ROWIDs确定
TABLE ACCESS BY INDEX ROWID 如果該表未分區和使用索引定位行
TABLE ACCESS BY GLOBAL INDEX ROWID 如果表是分區的,隻使用全局索引定位行
TABLE ACCESS BY LOCAL INDEX ROWID 如果該表是分區,并使用一個或多個本地索引和可能的某些全局索引定位行

分區邊界:

分區邊界可能依據如下方式計算:

l  一前面的PARTITION步驟,此種情況下,複制PARTITION_START和PARTITION_STOP列值到值前PARTITION步驟,PARTITION_ID包含PARTITION步驟的ID。PARTITION_START和PARTITION_STOP的可能值為NUMBER(N)、KEY、INVALID。

l  TABLE ACCESS或INDEX的步驟本身,此這種情況下,PARTITION_ID包含本步ID。PARTITION_START和PARTITION_STOP的可能值為NUMBER(N)、KEY、ROW REMOVE_LOCATION(TABLE ACCESS)和INVALID

UNION . 接受兩組行,傳回集合連接配接(union)的操作,消除重複。
VIEW . 執行視圖查詢,然後傳回結果行到另一操作的操作