索引的相关知识 ②.索引的操作
OK,接着昨天来学习索引。今天主要就是介绍一些索引的操作问题。没什么可多说的,都是基础操作。
三、更改索引
可以使用ALTER INDEX语句进行的操作有
● 重建或合并现存索引
● 回收未使用的空间或分配新盘区
● 指定/取消并行执行和更改并行度
● 更改存储参数或物理属性
● 指定LOGGING或NOLOGGING
● 启动或停用键压缩
● 将索引标记成不可用
● 开始或停止对索引使用的监视
注:不能更改索引的列结构
1、更改索引存储特性
ALTER INDEX emp_ename
STORAGE (PCTINCREASE 50);
使用ENABLE子句的USING INDEX子句来修改约束相关的索引
ALTER TABLE emp
ENABLE PRIMARY KEY SUING INDEX
PCTFREE 5;
2、重建现存索引
ALTER INDEX emp_name REBUILD;
ALTER INDEX emp_name REBUILD ONLINE;
注:如果没有重建索引的空间,可以用合并索引代替,也可以联机。
3、监视索引使用
ALTER INDEX index MONITORING USAGE;
ALTER INDEX index NOMONITORING USAGE;
可查询视图 V$OBJECT_USAGE来查询正在被监视的索引。MONITORING列标明监视是否被激活,USED标明是否被使用
每次指定MONITORING USAGE时,V$OBJECT_USAGE都会被针对指定的索引进行重新设置,以前的使用信息被清除或重新设置,新的开始时间被记录下来。当指定NOMONITORING USAGE,而又不执行进一步的监视时,则结束时间被记录下,知道下一次发布MONITORING USAGE语句之前,该视图信息均保持不变。
四、监视索引的空间使用
如果索引所在键值进场被INSERT、UPDATE、DELETE,那么随着时间的推移会失去空间效率,此时需要查询空间使用效率。
ANALYZE INDEX index_name CALIDATE STRUCTURE;
SELECT PCT_USED FROM INDEX_STATS WHERE NAME = 'index_name';
注:可以重复检查、删除、重建某索引,来检测其空间使用的平均效率。
当某一索引的空间使用效率降到其平均值之下,就可以用过删除并重建索引来精简空间。
五、删除索引
删除索引一般是因为以下原因:
● 不再需要该索引
● 该索引没有达到预期的性能改善
● 没有用到该索引
● 索引已无效,必须在重建前删除
● 所以已太碎,必须在重建前删除
可以使用以下语句来删除索引:
DROP INDEX emp_ename;
注:不能删除与UNIQUE KEY或PRIMARY KEY相关的索引,必须删除整个约束才可以删除该索引。
六、查看索引信息
DBA|ALL|USER_INDEXES:所有表上的所有索引,其中的某些列包含DBMS_STATS包或ANALYZE语句产生的统计数据。
DBA|ALL|USER_IND_COLUMNS:描述表上的索引的列,其中的某些列包含DBMS_STATS包或ANALYZE语句产生的统计数据。
DBA|ALL|USER_IND_EXPRESSIONS:描述表上的基于函数的索引表达式
INDEX_STATS:ANALYZE所产生的信息
INDEX_HISTOGRAM:ANALYZE所产生的信息
V$OBJECT_USAGE:MONITORING USAGE语句所产生的信息