oracle常见的索引是BTree索引和Bitmap索引。
BTree索引特点:
默认索引
适合大量增删改查
不能用or操作符
适合高基数的列(即唯一值多)
创建sql:create index lie_idx1 on table(liename);
Bitmap索引特点:
做update代价非常高
非常适合or操作符
基数少的列(即重复值多)
创建sql:create bitmap index lie_bit_idx1 on table(liename);
Bitmap索引使用配注:
对列做位图索引(Bitmap),该列必须是不常改动的。因为oracle在查询位图索引时,会将查找的某一重复值都锁定,在一个sql未提交前,其他用户操作拥有该重复值的sql会处于阻塞状态,直至第一个sql被提交。
创建索引的一些规则:
1、权衡索引和DML之间的关系。执行DML语句会修改索引
2、把索引和表数据放在不同的表空间。读取表数据时可以并行读取索引【移动索引:alter index indexname rebuild tablespace】
索引的常用操作:
重新创建索引:alter index indexname rebuild tablespace indexname2; 数据库操作删除命令后,索引记录并不会马上清除
在线重建索引:alter index indexname rebuild online;
整合索引:alter index indexname coalesce; 用于整理索引碎片
删除索引:drop index scott.indexname;
分析索引:
1、查询存放分析数据的表:select count(*) from index_status;
2、执行分析索引命令:analyze index indexname validate structrue; --分析完该索引信息会存于index_status表中。