Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  397 随笔 :: 33 文章 :: 29 评论 :: 0 Trackbacks
索引的相关知识 ②.索引的操作
 
    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语句所产生的信息
 
 
 
 
posted on 2009-02-14 20:55 decode360 阅读(127) 评论(0)  编辑  收藏 所属分类: 08.DBA

只有注册用户登录后才能发表评论。


网站导航: