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

oracle索引分类

?

B-TREE INDEX,B树索引:在创建索引时他是默认的索引类型,B树索引可以使单一列(简单)的索引,也可以是多个列(组合/复合)的索引。最多可以包括32列。适合:1,访问表中占很小比例的行,这样就可以使用索引快速定位。 2,根本不访问表,所需查询的数据全部在索引中,比如查询的列就是索引,这样直接访问索引就可以得到结果。,多使用在OLTP系统中。

Create index index_test01 on test01(id);


BITMAP-INDEX,位图索引:是在列的值重复的非常多的情况下使用。当大多数条目比不会向位图添加新的值时,位图索引在加载表时比B树索引做的好。由于位图索引最大的用处就是当列值有很多重复的时候,所以他不能被声明成唯一索引。当使用alter table修改有位图索引的列的时候,位图索引失效,需重建索引。位图索引里是101010这类的,所以是不包含任何列数据的。

CREATE BITMAP INDEX index_name ON normal_index_creation_clause;


反转建索引:当载入一些有序索引的时候,索引集中分布,如果数据使用的索引集中在一个数据块则会发生争用,这是可以将索引反转,reverse。

hash索引:使用hash索引必须使用hash集群。建立cluster的同时也建立了hash索引。

?

创建反序索引

createindex idx_reverse on customer(col1,col2) reverse;

修改indexreverseindex

alterindex index_name rebuild reverse;


function index ,基于函数的索引:当查询的列上使用了函数之后就不能使用原来的索引了,但是可以建立函数索引,使建立在函数上的索引可以使用。在优化器中,必须将参数QUERY_REWRITE_ENABLED设为true。

Create index index_fun_test05 on test05(substr(id,1,1)

分区索引:本地分区索引,全局分区索引。

本地分区索引:可以使用与表相同的分区键和范围界限来对本地索引分区。每个本地索引的分区只包含了他所关联的表分区的键和rowid。本地分区索引又分为有前缀索引和无前缀索引。有前缀索引:包含了来自分区键的键,并把它们作为索引的前导,相当于索引的分区都使用表相同范围的界限来创建的。没有包含在where子句中的值的分区是不会被访问到的,这样也提高了子句的性能。 无后缀索引:可以在表的任何一列建立无前缀的索引,但是索引的每个分区只包含表的相应分区的兼职。

全局分区索引是在一个索引分区包含来自多个表分区的键。在建立全局分区索引的时候,必须定义分区键的范围。只能是B树索引。如果一个分区被截取,增加,分割,删除等,就必须重建索引。全局有前缀索引没经