查看索引集群因子
select OWNER,INDEX_NAME,CLUSTERING_FACTOR from dba_indexes where owner=‘DEF’ and index_name=‘IDX_XX2’;
查看总行数
select count(*) from def.employee;
集群因子约接近总行数(越大),回表的时候会读更多数据块
集群因子影响索引回表的物理io次数
唯一可以降低集群因子的方式是(但实际情况不可取,因无法照顾到所有索引,除非只有一个索引,且愿意重建表):
根据索引列排序对表进行重建(create table new_table as select * from old_table order by 索引列)
或者可以消除或者减少回表达到效果
再或者表中所有数据块缓存在buffer cache中,不需要物理io了
总结:
集群因子大且约接近总行数,回表时读的块更多。
优化方法:
1.降低集群因子(方法见上)
2.减少回表或者消除回表(方法见 oracle SQL优化——概念——索引回表)
3.表中所有数据块缓存在buffer cache中,不需要物理io