oracle怎么创建反向索引,解决enq:TX - index contention

有时候发生激烈的索引竞争的话,例如有大量的等待事件:enq:TX - index contention,此时可能需要创建反向索引解决,那么如何创建呢?下面是创建反向索引的实验过程:

– 创建两张相同结构的表,内部结构及数据均引用scott用户下的emp表
实验:

SQL> create table test01 as select * from emp;

Table created.
SQL> create table test02 as select * from emp;

Table created.
SQL> select count(*) from test01;

  COUNT(*)
----------
        14
SQL> select count(*) from test02;

  COUNT(*)
----------
        14

–针对表TEST01的empno列,添加B-tree索引

SQL> create index idx_no on TEST01(EMPNO);
Index created.

–针对表TEST02的empno列,添加反向索引

SQL> create index idx_rev_no on TEST02(EMPNO) reverse;
Index created.

–验证上面的索引,NORMAL/REV表明为反向索引

SQL> select TABLE_NAME,INDEX_NAME,INDEX_TYPE from user_indexes where table_name in('TEST01','TEST02');

TABLE_NAME                     INDEX_NAME                     INDEX_TYPE
------------------------------ ------------------------------ ---------------------------
TEST01                         IDX_NO                             NORMAL
TEST02                         IDX_REV_NO                     NORMAL/REV

可以看到 IDX_REV_NO 的索引类型是 NORMAL/REV ,说明就已经是反向索引了。

你可能感兴趣的:(日常运维,故障解决,oracle,数据库,dba,数据库开发,sql)