我在字段createdate_idx
上创建索引createdate
,然后进行此查询:
从tablename中选择*,其中createdate> = to_date(' 2016-02-29',' yyyy-mm-dd');
但我不确定索引createdate_idx
是否已被使用。那么我怎样才能确认呢?
答案 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);
create index ind on emp(empno);
explain plan for
select * from emp where empno >1100;
select * from table(dbms_xplan.display);
答案 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 '%';