根據索引的類型與where限制條件的不同
(
(
(
(
一
通過唯一索引查找一個數值經常返回單個ROWID
如
SQL> set autot traceonly exp;
SQL> select * from scott
執行計劃
Plan hash value:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
|
|*
Predicate Information (identified by operation id):
二.索引范圍掃描(index range scan)
使用一個索引存取多行數據
在唯一索引上使用索引范圍掃描的典型情況下是在謂詞(where限制條件)中使用了范圍操作符(如>
使用索引范圍掃描的例子
SQL> select empno
執行計劃
Plan hash value:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
|
|*
Predicate Information (identified by operation id):
在非唯一索引上
使用index rang scan的
(a) 在唯一索引列上使用了range操作符(> < <> >= <= between)
(b) 在組合索引上
(c) 對非唯一索引列上進行的任何查詢
三.索引全掃描(index full scan)
與全表掃描對應
全Oracle索引掃描的例子
SQL> create index big_emp on scott
索引已創建
SQL> select empno
執行計劃
Plan hash value:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
|
|
四. 索引快速掃描(index fast full scan)
掃描索引中的所有的數據塊
索引快速掃描的例子
SQL> select /*+ index_ffs(dave index_dave) */ id from dave where id>
執行計劃
Plan hash value:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
|*
Predicate Information (identified by operation id):
為了實現這個效果
From:http://tw.wingwit.com/Article/program/Oracle/201311/16906.html