日期:2014-05-16  浏览次数:20749 次

oracle 索引类型

索引的分类
1二叉树索引或者叫B数索引(B-tree indexes),B树索引是使用最多的一种索引.在默认情况下,我们创建的索引都是B树索引.B树索引基于二叉树原理

2.二叉树聚簇索引(B-tree Cluster indexes) 主要用于聚簇

3.哈希聚簇索引(Hash Cluster indexes) 主要用于哈希(Hash)聚簇

4.反向索引(Reverse Key indexes) 反向索引也属于B树索引,它把索引值按字节反转过来.

5.位图索引(Bitmap indexes) 指通过位图对索引进行管理,位图索引适合唯一值很少的列,也就是重复值很多的列位图连接索引(Bitmap Join indexes) 用于两个表的连接

6.基于函数的索引(Function-Based indexes)如果在sql语句的where字句中经常用到函数或者表达式,则可以创建基于函数的索引.


创建索引
create index  idx_emp1_ename on emp1(ename); 

创建唯一索引
create unique index idx_uq_emp1_empno on emp1(empno) tablespace mypl;

创建位图索引
create bitmap index idx_bm_emp1_deptno on emp1(deptno);

创建反向索引
create index idx_reverse_emp1_ename on emp1(empno);

创建函数索引
create index idx_funs_emp1_ename on emp1 (upper(ename));



重建索引更换索引所在表空间
alter index idx_reverse_emp1_ename rebuild;
alter index idx_reverse_emp1_ename rebuild tablespace mypl;

删除索引
drop index idx_reverse_emp1_ename;

查看用户有哪些索引
select INDEX_NAME,INDEX_TYPE,TABLE_OWNER,TABLE_NAME,TABLE_TYPE from user_indexes;

查看索引所在表空间
select index_name,tablespace_name from dba_indexes;



分析索引后查看索引统计信息
analyze index idx_funs_emp1_ename validate structure;

select height,(DEL_LF_ROWS_LEN/ LF_ROWS_LEN)*100,blocks,BTREE_SPACE,USED_SPACE from index_stats;

如果(DEL_LF_ROWS_LEN/ LF_ROWS_LEN)*100的值大于20 或 heighr 大于4 需要考虑重建索引

(index_stats存放索引的统计信息; DEL_LF_ROWS表示删除行数 LF_ROWS表示总行数,height 表示二叉树从根到叶块的层次)