如何查看SQL執行計劃 使用 PL/SQL 查看,具體使用方法如下: 新建 解釋計劃視窗 ,將 SQL 複製進去執行,即可顯示執行計劃。 選中 SQL 語句,點擊菜單 工具-解釋計劃 或 按快捷鍵 F5 執行計劃結果說明 表掃描 table access by index rowid 通過ROWID ...
如何查看SQL執行計劃
使用 PL/SQL
查看,具體使用方法如下:
-
新建
解釋計劃視窗
,將SQL
複製進去執行,即可顯示執行計劃。
-
選中
SQL
語句,點擊菜單工具
-解釋計劃
或 按快捷鍵F5
執行計劃結果說明
表掃描
table access by index rowid
通過ROWID的表存取,一次I/O只能讀取一個數據塊。通過rowid讀取表欄位,rowid可能是索引鍵值上的rowid
table access full
全表掃描,對所有表中記錄進行掃描。表欄位不涉及索引時往往採用這種方式,此時效率最低。
索引掃描
index unique scan
索引唯一掃描,如果表欄位有 UNIQUE
或 PRIMARY KEY
約束,Oracle實現索引唯一掃描,這種掃描方式條件比較極端,出現比較少。
index range scan
索引範圍掃描,最常見的索引掃描方式。在非唯一索引上都使用索引範圍掃描,具體如下:
- 在唯一索引列上使用了以下圈定範圍的操作符(> < <> >= <= between等)
- 在組合索引上,只使用部分列進行查詢,導致查詢出多行
- 對非唯一索引列上進行的任何查詢
index full scan
索引全掃描,這種情況下,是查詢的數據都屬於索引欄位,一般都含有排序操作。
index fast full scan
索引快速掃描,如果查詢的數據都屬於索引欄位,並且沒有進行排序操作,那麼是屬於這種情況。條件比較極端,出現比較少。
index range scan
索引範圍掃描,最常見的索引掃描方式。在非唯一索引上都使用索引範圍掃描。
index range scan
索引範圍掃描,最常見的索引掃描方式。在非唯一索引上都使用索引範圍掃描。
表連接
排序合併連接(Sort Merge Join)
-
對於
非等值連接
,這種連接方式的效率是比較高的。 -
如果在關聯的列上都有索引,效果更好。
-
對於將2個較大的
row source
做連接,該連接方法比Nested Loops
連接要好一些。 -
但是如果
sort merge
返回的row source
過大,則又會導致使用過多的rowid
在表中查詢數據時,資料庫性能下降,因為過多的I/O.
嵌套迴圈(Nested Loops)
-
如果
driving row source
(外部表)比較小,並且在inner row source
(內部表)上有唯一索引,或有高選擇性非唯一索引時,使用這種方法可以得到較好的效率。 -
NESTED LOOPS
有其它連接方法沒有的的一個優點是:可以先返回已經連接的行,而不必等待所有的連接操作處理完才返回數據,這可以實現快速的響應時間。
哈希連接(Hash Join)
-
這種方法是在
oracle7
後來引入的,使用了比較先進的連接理論,一般來說,其效率應該好於其它2種連接,但是這種連接只能用在CBO優化器
中,而且需要設置合適的hash_area_size
參數,才能取得較好的性能。 -
在2個較大的
row source
之間連接時會取得相對較好的效率,在一個row source
較小時則能取得更好的效率。 -
只能用於
等值連接
中