Oracle 常見的執行計劃步驟(explain結果的Description數據參考)

在PL/SQL中 執行explain plain for  select ...算法



查看Description 數據參考:數據庫


 

Oracle 常見的執行計劃步驟緩存

 

 

這裏咱們介紹一些常見的執行計劃中的步驟及算法。函數

1、表訪問路徑spa

1TABLE ACCESS 排序

FULL:全表掃描。它會訪問表中的每一條記錄(讀取高水位線之內的每個數據塊)。索引

CLUSTER:經過索引簇的鍵來訪問表。ip

BY INDEX ROWID:經過指定ROWID來訪問表中的單條記錄。ROWID是訪問記錄的最快方式,一般由索引訪問獲得。io

BY USER ROWID:提供一個綁定變量、字面變量或WHERE CURRENT OF CURSOR子句來經過ROWID進行訪問。變量

BY GLOBAL INDEX ROWID:經過由全局分區索引來得到ROWID,而後進行表訪問。該訪問出如今分區表中。

BY LOCAL INDEX ROWID:經過由局部分區索引得到ROWID,而後進行表訪問。該訪問出如今分區表中。

2EXTERNAL TABLE ACCESS:訪問外部表。

3RESULT CACHE:這個SQL結果集可能來自結果集緩存。

4MAT_VIEW REWRITE ACCESSSQL被重寫以利用物化視圖。

 

2、索引操做

1AND-EQUAL:合併來自一個或多個索引的結果集。

2INDEX

UNIQUE SCAN:只返回一條記錄的地址(ROWID)的索引掃描。

RANGE SCAN:返回多條記錄的ROWID的索引檢索。通常出現這樣的訪問,是由於出現了區間操做符。

FULL SCAN:按照索引鍵的順序掃描整個索引。

SKIP SCAN:組合索引鍵中非前導列索引檢索。

FULL SCANMAX/MIN):檢索索引中的最高或最低的索引條目。

FAST FULL SCAN:按照塊順序掃描每個索引的條目,可能會使用多塊讀取。

3DOMAIN INDEX:應用域索引。

 

3、位圖索引操做

1BITMAP

CONVERSION:將位轉換爲ROWID或相反。

INDEX:從位圖中撮一個值或一個範圍的值。

MERGE:合併位圖。

MINUS:從一個位圖減去另外一個位圖。

OR:對兩個位圖進行OR操做。

 

4、錶鏈接操做

1CONNECT BY:對前一個步驟的輸出結果執行一個層次化的自鏈接操做。

2MERGE JOIN:對前一個步驟的輸出結果執行一個合併鏈接。

3NESTED LOOP:對前一個步驟執行嵌套循環鏈接。對上一層結果集的每一行,都會掃描下一層結果集以找到匹配記錄。

4HASH JOIN:對兩個記錄進行散列鏈接。

5)任意鏈接操做

OUTER:外鏈接

ANTI:反鏈接

SEMI:反鏈接

CARTESIAN:一個結果集中的每一條記錄都與另外一個結果集中的每一條記錄進行鏈接。

 

5、集合操做

CONCATENATION:與顯式指定一個UNION子句同樣,多個結果集被按照一樣的方式作合併。它一般發生在對索引列使用OR                                  運算時。

INTERSECTION:對兩個結果進行比較,只返回兩個結果集中都存在的記錄。

MINUS:除了在第二個結果集中出現的記錄外,返回第一個結果集中的全部記錄。

UNION-ALL:對兩個結果集進行合併,並返回兩個結果集中的全部記錄。

UNION:與UNION-ALL相同,可是它不返回重複記錄。

VIEW:訪問一個視圖定義或或建立一個臨時表用於存放結果集。

 

6、分區操做

1PARTITION

SINGLE:訪問單個分區。

ITERATOR:訪問多個分區。

ALL:訪問全部分區。

INLIST:基於IN列表中的值來訪問分區。

 

7、彙總操做

1COUNT:使用COUNT函數進計算。

STOPKEY:計算結果中的記錄,當達到必定數量時,就中止計算。這一般發生在使用了WHERE子句且指定了ROWNUM                         如:WHERE ROWNUM <= 10

2BUFFER SORT:對臨時結果集作一次內在排序。

3HASH GROUP BY:使用散列進行分組操做。

4INLIST ITERATOR:對IN中的每個值都實現一次子操做。

5SORT

GROUP BY:爲了知足GROUP BY而對結果集進行排序。

AGGREGATE:當在已分組好的數據上使用分組函數時,會出現此操做。

JOIN:了進行合併鏈接而對記錄進行排序。

UNIQUE:排除重複記錄的排序操做,一般是使用DISTINCT子句。

GROUP BY:爲知足GROUP BY子句,對結果集進行排序分組。

 

8、其餘操做

1FOR UPDATE:使用了FOR UPDATE子句。

2COLLECTION ITERATOR:使用了表函數提取記錄。

3FAST DUAL:訪問DUAL表。

4FILTER:從結果集中排除掉不匹配選取條件的記錄。

5REMOTE:經過數據庫鏈接,訪問一個外部的數據庫。

6FIRST ROW:獲取查詢的第一條記錄。

7SEQUENCE:使用了Oracle序列。

8LOAD AS SELECT:使用SELECT進行直接路徑的INSERT操做。

9FIXED TABLE:訪問固定的(X$/V$)表。

10FIXED INDEX:訪問固定的索引。

11WINDOW BUFFER:支持分析函數的內部操做。

相關文章
相關標籤/搜索