什么样的index需要rebuild?

以前写程序的时候,经常会遇到大数据量的情况,所有要对Oracle中各种优化性能比较熟悉,当然也遇到过比较头疼的问题,就比如今天跟大家分享的关于index的问题。

本来Index是用来帮助我们提高数据检索的性能,但是遇到数据库庞大并且程序逻辑复杂的时候,就会建立N个Index。有时候用户会突然反馈程序变得特 别慢,我们程序员只能一点一点查,但查到数据库的时候,看index也是正常在使用没什么异常,为什么会导致程序变慢呢?

之前逛论坛的时候,看到一篇关于index需要rebuild的帖子,觉得很好,跟大家分享一下,什么样的index需要rebuild?

当一个table经常进行DML操作时,它的索引会存在许多block空间的浪费,这是因为index block中的记录只有在全部表示为不可用时, block 才能被加入到freelist中去被重新利用。所以我们需要寻找那些浪费空间很严重的index。

方法是:  

1) analyze index  index_name validate structure;

2)  select del_lf_blk_len/lf_blk_len  from index_stats
      where name = :index_name;

3) 如果结果大于20%, 那你的Index就可以被rebuild了。

如果有跟我遇到过同样问题的童鞋,不妨可以试一试!

posted on 2013-01-15 14:24  Alice Sun  阅读(521)  评论(0)    收藏  举报

导航