反向键索引

反向键索引

情景:
1,insert繁忙,主键是用序列号(每次加1),主键是有索引的,用序列号生成,因此相邻的索引记录就可能存在于同一个数据块中,引起数据块竞争,导致性能下降。
2,随着时间增长,久值被删除,新值被插入,逐渐的序列号很大,索引树是往序列号大的一面偏,树的深度加深,所以索引效率低下,造成严重的性能问题。

注意:位图索引与其他类型的索引之间不能使用这种方法进行转换;如果要转换的话,只能先删除原来的索引后,再重建成要转换类型的索引。
反转前 --反转后
123  ---321        
124  ---421
125  ---521
所以反转后,原来相邻的主键就不再相邻了。就可以将相邻的序列号分散到不同的数据块中,上面情景1,2的问题就解决了。

利弊:建了反向键索引后,如果要进行范围查询(between and),就会不认索引走全表扫描,
总结:在建反向键索引时,要考虑insert操作重要,和还是范围查询重要

语法:
1,创建反向键索引
SQL> create table test3 as select * from dept;

Table created.

SQL> create index i_rev on test3(dname) reverse tablespace TEST_INDEX;

Index created.

2,查询
SQL> select INDEX_NAME,INDEX_TYPE,TABLE_NAME,UNIQUENESS from user_indexes;

INDEX_NAME INDEX_TYPE      TABLE_NAME            UNIQUENES
---------- --------------- ------------------------------ -      --------
I_REV      NORMAL/REV      TEST3                          NONUNIQUE
PK_DEPT    NORMAL           DEPT                           UNIQUE

3,修改
SQL> alter index I_REV rebuild noreverse;

Index altered.

SQL> select INDEX_NAME,INDEX_TYPE,TABLE_NAME,UNIQUENESS from user_indexes;

INDEX_NAME INDEX_TYPE      TABLE_NAME                     UNIQUENES
---------- --------------- ------------------------------ ---------
I_REV      NORMAL          TEST3                          NONUNIQUE
PK_DEPT    NORMAL          DEPT                           UNIQUE

SQL> alter index I_REV rebuild reverse;

Index altered.

SQL> select INDEX_NAME,INDEX_TYPE,TABLE_NAME,UNIQUENESS from user_indexes;

INDEX_NAME INDEX_TYPE      TABLE_NAME                     UNIQUENES
---------- --------------- ------------------------------ ---------
I_REV      NORMAL/REV      TEST3                          NONUNIQUE
PK_DEPT    NORMAL          DEPT                           UNIQUE


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26465805/viewspace-712650/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26465805/viewspace-712650/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值