组合索引的前缀与单列索引一致

drop table t purge;

create table t as select * from dba_objects;

create index idx_object_id on t(object_id,object_type);

set autotrace traceonly

set linesize 1000

--以下就能用到索引,因为object_id列是前缀


select * from t where object_id=19;

执行计划

---------------------------------------------------------------------------------------------

| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |               |     1 |   207 |     3   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T             |     1 |   207 |     3   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | IDX_OBJECT_ID |     1 |       |     2   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------

统计信息

----------------------------------------------------------

          0  recursive calls

          0  db block gets

          4  consistent gets

          0  physical reads

          0  redo size

       1392  bytes sent via SQL*Net to client

        416  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          1  rows processed




组合索引的前缀与单列索引不一致

drop index idx_object_id;

create index idx_object_id on t(object_type, object_id);

--以下就不能用到索引,因为object_id列是后缀


select * from t where object_id=19;

 执行计划

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |    12 |  2484 |   292   (1)| 00:00:04 |

|*  1 |  TABLE ACCESS FULL| T    |    12 |  2484 |   292   (1)| 00:00:04 |

--------------------------------------------------------------------------

统计信息

----------------------------------------------------------

          0  recursive calls

          0  db block gets

       1049  consistent gets

          0  physical reads

          0  redo size

       1389  bytes sent via SQL*Net to client

        416  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          1  rows processed