1. 程式人生 > >Oracle 常見的執行計劃步驟(explain結果的Description資料參考)

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

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


檢視Description 資料參考:

Oracle 常見的執行計劃步驟

這裡我們介紹一些常見的執行計劃中的步驟及演算法。

1、表訪問路徑

1TABLE ACCESS 

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

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

BY INDEX ROWID:通過指定ROWID來訪問表中的單條記錄。ROWID是訪問記錄的最快方式,通常由索引訪問得到。

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:支援分析函式的內部操作。

相關推薦

Oracle 常見執行計劃步驟(explain結果Description資料參考)

在PL/SQL中 執行explain plain for  select ... 檢視Description 資料參考: Oracle 常見的執行計劃步驟 這裡我們介紹一些常見的執行計劃中的步驟及演算法。 1、表訪問路徑 (1)TABLE ACCESS  FU

2.5 Oracle常見執行計劃 《基於Oracle的優化(學習筆記)》

與表訪問相關的執行計劃 全表掃描的關鍵字是:TABLE ACESS FULL ROWID掃描的關鍵字:TABLE ACESS BY USER ROWID 或 TABLE ACESS BY INDEX ROWID 與B樹相關的執行計劃 索引唯一掃描:INDEX UN

Oracle 執行計劃Explain Plan) 說明

如果要分析某條SQL的效能問題,通常我們要先看SQL的執行計劃,看看SQL的每一步執行是否存在問題。 如果一條SQL平時執行的好好的,卻有一天突然效能很差,如果排除了系統資源和阻塞的原因,那麼基本可以斷定是執行計劃出了問題。        看懂執行計劃也就成了SQL優化的

oracle 執行計劃explain plan)說明

        基於oracle的應用系統很多效能問題,是由應用系統sql效能低劣引起的,所以,sql的效能優化很重要,分析與優化sql的效能我們一般通過檢視該sql的執行計劃,本文就如何看懂執行計劃,以及如何通過分析執行計劃對sql進行優化做相應說明。 一、什麼是執行計劃

oracle各種執行計劃優缺點

loop with 共享 amp 文件 events 設置 filter rac 一. 獲取oracle執行計劃的方法有6種,各自的優缺點如下,根據實際情況進行選擇使用: explain plan for 方式 步驟1:explain plan for 後跟著SQL語句

Mysql Database 執行計劃explain

id 顯示select語句的執行順序 (1) id相同時,執行順序由上至下 (2) 如果是子查詢,id的序號會遞增,id值越大優先順序越高,越先被執行 (3) id如果相同,可以認為是一組,從上往下順序執行;在所有組中,id值越大,優先順序越高,越先執行 select_ty

Hive之執行計劃分析(explain)

Hive是通過把sql轉換成對應mapreduce程式,然後提交到Hadoop上執行,檢視具體的執行計劃可以通過執行explain sql知曉 一條sql會被轉化成由多個階段組成的步驟,每個步驟有執行順序和依賴關係,可以稱之為有向無環圖(DAG:Directed Acyclic Graph) 這

Oracle 固定執行計劃--sqlprofile

步驟一-------------------------建立測試表,根據DBA_OBJECTS建立,OBJECT_ID上有索引 Create table test as select * from dba_objects; create index t_1 on test(t

oracle執行計劃中表的連結方式介紹

 在日常基於資料庫應用的開發過程中,我們經常需要對多個表或者資料來源進行關聯查詢而得出我們需要的結果集。那麼Oracle到底存在著哪幾種連線方式?優化器內部又是怎樣處理這些連線的?哪種連線方式又是適合哪種查詢需求的?只有對這些問題有了清晰的理解後,我們才能針對特定的查詢需求選擇合適

oracle sql_plan 執行計劃

SQL> SELECT SQL_ID,CHILD_NUMBER   2  FROM V$SQL    3  WHERE SQL_TEXT LIKE '%SELECT ENAME, SAL FROM SCOTT.EMP E, SCOTT.DEPT D WHERE E.DEPTNO =D.DEPTNO 

Oracle SQL執行計劃基線總結(SQL Plan Baseline)

為了驗證基線中一個處於不可接受狀態的執行計劃是否比一個處於可接受狀態的執行計劃具有更高的效率,必須通過演化來驗證,需要讓優化器以不同的執行計劃來執行這條SQL語句,觀察不可接受狀態的執行計劃基線是否會帶來更好的效能,如果效能確實更高,這個不可接受狀態的基線將會轉換為可接受狀態。演化的方式有兩種:

ORACLE優化--執行計劃

<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-fon

使用hint優化Oracle執行計劃 以及 SQL Tune Advisor的使用

背景: 某表忽然出現查詢非常緩慢的情況,cost 100+ 秒以上;嚴重影響生產。 原SQL: explain plan for select * from ( select ID id,RET_NO retNo, FROM_SYS fromSy, TO_SYS to

查詢oracle語句執行計劃

解釋: explain plan for select * from emp where deptno=10; 顯示: select * from table(dbms_xplan.display);

oracle 固定執行計劃(一)之 sql_profile

到oracle11G 時,已經有三種方式來固定執行計劃了 1.10G以前用的是儲存大綱 2.10G多了一種,sql_profile 3.11G又多了sql plan management 今天先講講sql_profile 1.先建立一張測試表, SQL> crea

Oracle 檢視執行計劃

-- Start EXPLAIN PLAN 我們可以通過 EXPLAIN PLAN 語句生成執行計劃,該語句把執行計劃儲存到一個叫做 PLAN_TABLE 的表中,我們可以通過查詢這個表來檢視執行計劃。下面是一個簡單例子。 -- 生成執行計劃 EXPLAIN PLAN

效能調優分析之:Oracle SQL執行計劃報告生成器

Oracle SQL執行計劃分析器功能的建立3步曲: 1 首先,編譯XYG_ALD_SESS_PKG的Package頭。 (XYG_ALD_SESS_PKG.sql) 2 接著要建立好下面的4個檢視物件。因為XYG_ALD_SESS_PKG包體會用到。(V

oracle定時執行計劃任務

Oracle在10g版本以前,計劃任務用的是DBMS_JOB包,10g版本引入DBMS_SCHEDULER來替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB提供了        更強大的功能和更靈活的機制/管理,但DBMS_JOB包的使用相對比較簡單,也基本能

看懂PL/SQL執行計劃的顯示結果

統計資訊解釋: recursive calls           遞迴呼叫,有時為了執行使用者發出的一個sql語句,Oracle必須執行一些額外的語句,我們將這些額外的語句稱之為''recursive                            

MySQL優化從執行計劃開始(explain超詳細)

### 前言 小夥伴一定遇到過這樣反饋:這頁面載入資料太慢啦,甚至有的超時了,使用者體驗極差,需要趕緊優化; 反饋等同於投訴啊,多有幾次,估計領導要找你談話啦。 於是不得不停下手裡頭的活,趕緊進行排查,最終可能是程式處理的問題、也可能是併發量大導致排隊問題、也可能是SQL查詢效能導致等;而在很多時候,S