反向键索引
1反向键索引是特殊的B数索引
2适用于在表中严格排序的列上创建反向键索引
3查询时只要像常规方式一样查询数据,不需要关心反向键处理,因为oracle会自动完成该处理。

什么是反向键索引
1在常规的B树索引中,如果主键列时递增的,那么往表中添加新的数据时,B树索引将直接访问最后一个数据,而不是一个节点一个节点的访问。这种情况造成的现象是:随着数据行的不断添加,已经原有数据行的删除,B树索引的很多空间会被浪费掉,如1012节点上方的几个数据行都是空的。而且B树索引将会变得越来越不均匀。如下图这般。
这里写图片描述
添加新的数据:B树索引将在1024节点的下方添加数据
2为了解决1中的问题,我们引入反向键索引。

反向键索引原理
如果用户使用序列编号在表中添加新的纪录,则反向键索引首先反向转换每个键值的字节,然后在反向后的新数据在进行索引.

例如:用户输入的索引键是4201,那么反向键索引将其反向转换为1024,这样索引键就变成非递增了,也就意味着,如果将反向后的索引键添加到叶子节点中,可能在任意的叶子节点中进行,从而使新的数据在值得范围分布式比原来的均匀。

创建反向键索引
1适用于在表中严格排序的列上创建反向键索引

创建反向键索引
提供的测试表
create table student3(
sno varchar2(10) primary key,
/–该列是自动增长的(用序列和触发器实现)/
id number(2),
sname varchar2(20),
sage number(2)
);
创建反向键索引
create index sno_reverse_index on zhou.student3(id)
reverse
tablespace MYSPACE;

这里写图片描述

posted on 2017-05-28 11:41  2637282556  阅读(286)  评论(0编辑  收藏  举报