Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2229578
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2011-12-27 17:59:34

为了提高表的查询速度,常常要在表上创建索引。但是,创建的索引真的使用了吗?这就需要监控索引,看索引是否被使用了。没有使用的索引不仅不能加速查询,还占用大量的存储空间。

监控索引的sql语句格式
  1. alter index index_name monitoring usage;
监控一个用户下所有索引可以使用SQL语句生成监控的语句
  1. SQL> select 'alter index '||index_name||' monitoring usage;' from user_indexes;
    1. alter index USER_TIME monitoring usage;
    2. alter index USER_DANK_PK monitoring usage;
    3. alter index USER_MD5ID monitoring usage;
执行生成的监控语句,这样就开始监控索引了
可以通过语句查询监控状态以及索引是否被使用
  1. SQL> select INDEX_NAME,MONITORING,USED from v$object_usage;
  2.     INDEX_NAME MONITO USED
  3.     ------------------------------------------------------------ ------ ------
  4.     USER_MD5ID YES NO
监控索引需要一段时间,具体多长时间合适要根据实际情况,如有的存储过程一个月才跑一次,那么最好监控一个月以上。
查看不使用的索引名称、占用多大空间,创建在哪个表上。
  1. select segment_name,table_name,bytes/1024/1024 from user_segments,user_indexes where segment_type='INDEX' and segment_name=index_name;
  2. SEGMENT_NAME                       TABLE_NAME              BYTES/1024/1024
    -------------------------------------------------- ------------------------------ ---------------
    USER_SIGN_IMEI                       USER_SIGN                       72
    WAP_LOG_PK1                       WAP_LOG                      320
    WELCOME_PAGE_PK                    WELCOME_PAGE                 .0625


不使用的索引就删除吧,节省空间!



阅读(1614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~