查看表:
- train@reg>desc LY_SB_TEST
- 名称 是否为空? 类型
- ----------------------------------- -------- ------------------
- NSR VARCHAR2(44)
- SSSQ_Q VARCHAR2(8)
- SSSQ_Z VARCHAR2(8)
- SE NUMBER
–LY_SB_TEST总共有36万行数据
train@reg>–索引做统计分析
- train@reg>BEGIN
- DBMS_STATS.GATHER_TABLE_STATS(USER,'LY_SB_TEST',CASCADE => TRUE);
- END;
- /
- PL/SQL 过程已成功完成。
分析索引,验证索引结构
- train@reg>analyze index IDX_LY_SB_TEST_N1 validate structure;
- 索引已分析
- train@reg>select t.name, --索引名
- t.lf_rows, --number of leaf rows (values in the index)
- t.lf_blks,
- t.del_lf_rows, --number of deleted leaf rows in the index
- (t.del_lf_rows / t.lf_rows)*100 ratio --删除比例
- from index_stats t
- where t.name='IDX_LY_SB_TEST_N1';
- NAME LF_ROWS LF_BLKS DEL_LF_ROWS RATIO
- ------------------------------ ---------- ---------- ----------- ----------
- IDX_LY_SB_TEST_N1 360000 1300 0 0
模拟数据删除,让索引产生大量碎片
- train@reg>delete ly_sb_test where mod(se,3)=1;
- 已删除143643行。
- train@reg>commit;
- 提交完成。
- 已用时间: 00: 00: 00.01
- train@reg>--分析索引,查看索引碎片是否严重
- train@reg>
- train@reg>analyze index IDX_LY_SB_TEST_N1 validate structure;
- 索引已分析
- 已用时间: 00: 00: 00.37
- train@reg>select t.name, --索引名
- t.lf_rows, --number of leaf rows (values in the index)
- t.lf_blks,
- t.del_lf_rows, --number of deleted leaf rows in the index
- (t.del_lf_rows / t.lf_rows)*100 ratio --删除比例
- from index_stats t
- where t.name='IDX_LY_SB_TEST_N1';
- NAME LF_ROWS LF_BLKS DEL_LF_ROWS RATIO
- ------------------------------ ---------- ---------- ----------- ----------
- IDX_LY_SB_TEST_N1 360000 1300 143643 39.9008333
- 已用时间: 00: 00: 00.01
如果RATIO值大于30%以上就需要考虑索引重建了。
From:http://www.idb-stock.net/idb/2011/05/10/66.html