为了提高表的查询速度,常常要在表上创建索引。但是,创建的索引真的使用了吗?这就需要监控索引,看索引是否被使用了。没有使用的索引不仅不能加速查询,还占用大量的存储空间。
监控索引的sql语句格式
- alter index index_name monitoring usage;
监控一个用户下所有索引可以使用SQL语句生成监控的语句
- SQL> select 'alter index '||index_name||' monitoring usage;' from user_indexes;
- alter index USER_TIME monitoring usage;
-
alter index USER_DANK_PK monitoring usage;
-
alter index USER_MD5ID monitoring usage;
执行生成的监控语句,这样就开始监控索引了
可以通过语句查询监控状态以及索引是否被使用
- SQL> select INDEX_NAME,MONITORING,USED from v$object_usage;
-
INDEX_NAME MONITO USED
-
------------------------------------------------------------ ------ ------
-
USER_MD5ID YES NO
监控索引需要一段时间,具体多长时间合适要根据实际情况,如有的存储过程一个月才跑一次,那么最好监控一个月以上。
查看不使用的索引名称、占用多大空间,创建在哪个表上。
- select segment_name,table_name,bytes/1024/1024 from user_segments,user_indexes where segment_type='INDEX' and segment_name=index_name;
- 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
不使用的索引就删除吧,节省空间!
阅读(2410) | 评论(0) | 转发(0) |