Oracle索引访问方式(三)
| 1000 | 14000 | 7 (0)| 00:00:01 |
|* 1 | INDEX SAMPLE FAST FULL SCAN| FAST_IDX | 1000 | 14000 | 7 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("ID">5)
(8)INDEX FULL SCAN (MIN/MAX)
对索引字段全扫描,以获取索引字段最大,最小值。示例:
[sql]
SQL> exec sql_explain('select max(empno) from emp');
Plan hash value: 1707959928
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4 | 1 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 4 | | |
| 2 | INDEX FULL SCAN (MIN/MAX)| PK_EMP | 1 | 4 | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------
PL/SQL 过程已成功完成。
(9)INDEX FULL SCAN DESCENDING
以索引逻辑顺序相反的顺序进行完全扫描
示例:
[sql]
SQL> exec sql_explain('select * from emp order by empno desc');
Plan hash value: 3088625055
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 15 | 585 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMP | 15 | 585 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
PL/SQL 过程已成功完成。
(10)INDEX SKIP SCAN
索引跳跃扫描,在复合索引中,如果后续索引比第一索引唯一性强,而且用后续索引作为过滤条件时,会发生索引跳跃扫描。
示例:
[sql]
----创建name为第一索引,但是id字段唯一性要强
SQL> create index fh_index1 on fast_xyc(name,id);
索引已创建。
SQL> exec sql_explain('select * from fast_xyc where id=:A');
Plan hash value: 3991949787
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 | 4 (0)| 00:00:01 |
|* 1 | INDEX SKIP SCAN | FH_INDEX1 | 1 | 15 | 4 (0)| 00:00:01 |
------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("ID"=TO_NUMBER(:A))
filter("ID"=TO_NUMBER(:A))
PL/SQL 过程已成功完成。
(11)DOMAIN INDEX
访问域索引(例如全文索引)
示例:
[sql]
SQL> exec sql_explain('select * from qw_xyc where contains(name,:A)>0');
Plan hash value: 2774494995
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0