Oracle设置不可见索引

本文介绍了如何在Oracle数据库中创建、修改和查看不可见索引。通过`CREATE INDEX`语句创建不可见索引,使用`ALTER INDEX`命令切换索引的可见性。不可见索引不会被查询优化器使用,从而允许在不影响应用性能的情况下测试索引效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle不可见索引

1、在创建索引时设置为不可见索引

语法:

CREATE INDEX 索引名 ON 表名(列名) INVISIBLE;

2、将一个现有的索引改为不可见索引/将一个不可见的索引改回为一个可见的索引

语法:

ALTER INDEX 索引名 INVISIBLE | VISIBLE;

实例:

1、查看nice用户下t_stu开始的索引信息

select index_name, table_name, tablespace_name, index_type, visibility, status
from dba_indexes
where owner = 'NICE' 
  4  and index_name LIKE 'T_STU%';

INDEX_NAME	     TABLE_NAME TABLESPACE_NAME INDEX_TYPE VISIBILIT STATUS
-------------------- ---------- --------------- ---------- --------- --------
T_STU_NAME	     T_STU	DATA_TABLEONE	NORMAL	   INVISIBLE  VALID
T_STU_ID	     T_STU	DATA_TABLEONE	BITMAP	   VISIBLE    VALID

SQL>

2、更改索引t_stu_name为不可见索引

SQL> ALTER INDEX NICE.t_stu_name INVISIBLE;

Index altered.

SQL>

3、再次查看nice用户索引信息

select index_name, table_name, tablespace_name, index_type, visibility, status
from dba_indexes
where owner = 'NICE' 
and index_name LIKE 'T_STU%';

INDEX_NAME	         TABLE_NAME TABLESPACE_NAME INDEX_TYPE VISIBILIT STATUS
-------------------- ---------- --------------- ---------- --------- --------
T_STU_NAME	            T_STU	DATA_TABLEONE	NORMAL	   INVISIBLE  VALID
T_STU_ID	            T_STU	DATA_TABLEONE	BITMAP	   VISIBLE    VALID

SQL>

现在可以看到t_stu_name索引已经更改为不可见索引了(INVISIBLE)
自修改完之后,改表上执行任何SQL语句时,Oracle优化器都百分之百的保证不使用那个不可见的索引t_stu_name,即使使用了启示,也不管用。

4、将该不可见索引再次改为可见索引

SQL> ALTER INDEX NICE.t_stu_name VISIBLE;

Index altered.

SQL>

5、查询验证:

select index_name, table_name, tablespace_name, index_type, visibility, status
from dba_indexes
where owner = 'NICE' 
  4  and index_name LIKE 'T_STU%';

INDEX_NAME	     TABLE_NAME TABLESPACE_NAME INDEX_TYPE VISIBILIT STATUS
-------------------- ---------- --------------- ---------- --------- --------
T_STU_NAME	     T_STU	DATA_TABLEONE	NORMAL	   VISIBLE   VALID
T_STU_ID	       T_STU	DATA_TABLEONE	BITMAP	   VISIBLE   VALID

SQL>

可以看到t_stu_name索引已经再次更改为可见索引(VISIBLE)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值