oracle 两个索引的使用方法,索引使用优化的两个操作

analyze index t_test1_idx1 validate structure;

会话视图 index_stats

alter index pk_emp monitoring usage ;

全局视图 v$object_usage

[@more@]

INDEX_STATS" stores information from the lastANALYZE INDEX ... VALIDATE STRUCTUREstatement.

上面语句意思是说index_stats存储最后一次对索引分析结构的信息.

判断一个所以是否需要重建,我们介绍一个简单的方法:对一个索引进行结构分析后,如果该索引占用超过了一个数据块,且满足以下条件之一:B-tree树的高度大于3;使用百分比低于75%;数据删除率大于15%,就需要考虑对索引重建:

特别说明:

使用百分比低于75%,有可能是因为表当前记录数据很少造成的。这时一般不需要优化。

analyze index t_test1_idx1 validate structure;

Index analyzed.

SQL> select btree_space, -- if > 8192(块的大小)

2 height, -- if > 3

3 pct_used, -- if < 75

4 del_lf_rows/(decode(lf_rows,0,1,lf_rows)) *100 as deleted_pct -- if > 20%

5 from index_stats;

BTREE_SPACE HEIGHT PCT_USED DELETED_PCT

----------- ---------- ---------- -----------

880032 2 89 0

如果超出了if 后面的值即可能需要进行 index rebuild.

注:index_stats只能在执行analyze的语句的session会话中看到数值,另外的会话是看不到的.即当前会话只能看到当前analyze分析后的结果.

--

可以用下面的过程分析所有的索引,将其写入一张普通表中

DECLARE

BEGIN

EXECUTE IMMEDIATE 'truncate table stats_indexes';

FOR REC IN (SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_OWNER = 'CITRIX') LOOP

EXECUTE IMMEDIATE 'analyze index ' || REC.INDEX_NAME || ' validate structure';

INSERT INTO STATS_INDEXES

SELECT * FROM INDEX_STATS;

COMMIT;

END LOOP;

END;

-----------------

2, 查看索引是否被使用。这个视图是系统全局的。

alter index pk_emp monitoring usage ;

alter index pk_emp nomonitoring usage;

select * from v$object_usage ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值