不可见索引:优化器看不到这个索引的存在,但是数据库在增删改操作时还要像对待普通索引一样维护不可见索引。
(除了它对优化器的不可见特性别的和普通索引没什么区别)
1、不可见索引的用途:
1)、当用altre index...monitoring.监控索引使用,找出不被任何sql使用的索引,这时可以先把这些索引改为不可见,等系统没有问题再删除。
如果直接删除或使其不可用如果以后要恢复代价是比较大的。
2)、也可以用于测试是否应该删除某个索引。
3)、在添加索引前,可以先使索引不可见,在会话级别设置optimizer_use_invisible_indexes=true,然后测试,如果满意可以ALTER INDEX ... VISIBLE
2、创建不可见索引:
CREATE INDEX IDX_EMPLOYEE ON EMPOYEE(ID) INVISIBLE;
3、修改索引状态:
ALTER INDEX IDX_EMPLOYEE VISIBLE;
ALTER INDEX IDX_EMPLOYEE INVISIBLE;
4、查找不可见索引:
SELECT INDEX_NAME,VISIBILITY FROM USER_INDEXES WHERE VISIBILITY='INVISIBLE';
5、参数optimizer_use_invisble_indexes
true:不可见索引对优化器可用
false(默认值):不可见索引优化器不可用
alter session set optimizer_use_invisble_indexes=true;
6、收集统计信息
exec dbms_stats.gather_index_stats(user,'IDX_EMPLOYEE');
(除了它对优化器的不可见特性别的和普通索引没什么区别)
1、不可见索引的用途:
1)、当用altre index...monitoring.监控索引使用,找出不被任何sql使用的索引,这时可以先把这些索引改为不可见,等系统没有问题再删除。
如果直接删除或使其不可用如果以后要恢复代价是比较大的。
2)、也可以用于测试是否应该删除某个索引。
3)、在添加索引前,可以先使索引不可见,在会话级别设置optimizer_use_invisible_indexes=true,然后测试,如果满意可以ALTER INDEX ... VISIBLE
2、创建不可见索引:
CREATE INDEX IDX_EMPLOYEE ON EMPOYEE(ID) INVISIBLE;
3、修改索引状态:
ALTER INDEX IDX_EMPLOYEE VISIBLE;
ALTER INDEX IDX_EMPLOYEE INVISIBLE;
4、查找不可见索引:
SELECT INDEX_NAME,VISIBILITY FROM USER_INDEXES WHERE VISIBILITY='INVISIBLE';
5、参数optimizer_use_invisble_indexes
true:不可见索引对优化器可用
false(默认值):不可见索引优化器不可用
alter session set optimizer_use_invisble_indexes=true;
6、收集统计信息
exec dbms_stats.gather_index_stats(user,'IDX_EMPLOYEE');