一、索引的分析
根据ORACLE文档所描述,如下情况要考虑重建索引
1. analyze index your_index_name validate structure;
2. 查询索引碎片:
select name,del_lf_rows, lf_rows, round((del_lf_rows/(lf_rows+0.0000000001))*100)
frag_pct from index_stats
一般如果该索引的frag_pct>10%,那么就需要rebuild index
当然analyze index your_index_name validate structure除了可以分析素因是否需要重建外,还可以让还能获得其他有用信息,能让了解当前索引的大小结构高度等等,以确定优化方案。还要特别留意另一个知识点:“该命令将会导致锁!”而且操作大表,该命令执行时间会相当长,会导致生产因此挂起一堆处理该表的进程!
二、索引高度
Oracle在表示从索引根块到叶子块遍历所涉及的块数时用了两个含义稍有不同的术语。第一个是高度(HEIGHT),这是指从根块到叶子块遍历所需的块数。使用ANALYZE INDEX <name> VALIDATE STRUCTURE命令分析索引后,可以从INDEX_STATS视图找到这个高度(HEIGHT)值。另一个术语是BLEVEL,这是指分支层数,与HEIGHT相差1(BLEVEL不把叶子块层算在内)。收集统计信息后,可以在诸如USER_INDEXES之类的常规字典表中找到BLEVEL值。
select index_name, blevel, num_rows from user