Oracle:如何检查索引状态?

时间:2016-02-29 03:30:12

标签: oracle indexing

我在字段createdate_idx上创建索引createdate,然后进行此查询:

  

从tablename中选择*,其中createdate> = to_date(' 2016-02-29',' yyyy-mm-dd');

但我不确定索引createdate_idx是否已被使用。那么我怎样才能确认呢?

3 个答案:

答案 0 :(得分:1)

EXPLAIN PLAN将显示使用的索引和其他信息。

例如:

explain plan for
select * from tablename where createdate>=to_date('2016-02-29','yyyy-mm-dd');

select * from table(dbms_xplan.display);

Plan hash value: 3955337982

-------------------------------------------------------------------------------
| Id  | Operation         | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |           |     1 |     9 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| TABLENAME |     1 |     9 |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("CREATEDATE">=TO_DATE(' 2016-02-29 00:00:00', 
              'syyyy-mm-dd hh24:mi:ss'))

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)

答案 1 :(得分:0)

explain plan将向您显示使用了什么索引以及其他信息。

注意:使用查询中有索引的列值来查看来自 从表中选择(dbms_xplan.display);

  1. 如果不存在则创建索引:create index ind on emp(empno);
  2. explain plan for select * from emp where empno >1100;
  3. select * from table(dbms_xplan.display);

enter image description here

答案 2 :(得分:0)

可以通过查询Oracle系统视图来检查索引状态:

select TABLE_NAME, INDEX_NAME, STATUS from USER_INDEXES where TABLE_NAME like '%';

N/A字段的值STATUS表示索引已分区。可以使用此查询检查单个索引分区的状态:

select INDEX_NAME, PARTITION_NAME, STATUS from USER_IND_PARTITIONS where INDEX_NAME like '%';