ITPub博客

首页 > 数据库 > Oracle > Oracle访问索引的执行计划(二)

Oracle访问索引的执行计划(二)

原创 Oracle 作者:stonebox1122 时间:2017-05-26 22:10:05 0 删除 编辑

Oracle访问索引的执行计划(一)


如果目标SQL对有唯一索引字段指定范围查询条件,则会使用索引范围扫描,而对于非唯一索引字段,不管指定什么查询条件,均不会使用索引唯一扫描。索引范围扫描的执行计划为INDEX RANGE SCAN。

 

查看HR用户下EMPLOYEES表的EMPLOYEE_ID字段的索引,为唯一索引。
SQL> select a.table_name,column_name,a.index_name,index_type,uniqueness from user_indexes a,user_ind_columns b where a.index_name=b.index_name and a.table_name='EMPLOYEES' and column_name='EMPLOYEE_ID';

TABLE_NAME           COLUMN_NAME          INDEX_NAME           INDEX_TYPE           UNIQUENES
-------------------- -------------------- -------------------- -------------------- ---------
EMPLOYEES            EMPLOYEE_ID          EMP_EMP_ID_PK        NORMAL               UNIQUE

 

使用范围查询条件:
SQL> select employee_id,last_name,salary from employees where employee_id between 100 and 110;

11 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 603312277

---------------------------------------------------------------------------------------------
| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |               |    11 |   176 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMPLOYEES     |    11 |   176 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | EMP_EMP_ID_PK |    11 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------


查看HR用户下EMPLOYEES表的LAST_NAME字段的索引,为非唯一索引。
SQL> select a.table_name,column_name,a.index_name,index_type,uniqueness from user_indexes a,user_ind_columns b where a.index_name=b.index_name and a.table_name='EMPLOYEES' and column_name='LAST_NAME';

TABLE_NAME      COLUMN_NAME     INDEX_NAME      INDEX_TYPE      UNIQUENES
--------------- --------------- --------------- --------------- ---------
EMPLOYEES       LAST_NAME       EMP_NAME_IX     NORMAL          NONUNIQUE

 

使用等值查询条件:

SQL> select employee_id,last_name,salary from employees where last_name='Lee';


Execution Plan
----------------------------------------------------------
Plan hash value: 2077747057

-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |             |     1 |    16 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMPLOYEES   |     1 |    16 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | EMP_NAME_IX |     1 |       |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28536251/viewspace-2139955/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-13

  • 博文量
    204
  • 访问量
    1188963