今天在增加一个时间查询条件时遇到时间索引在计划中不起效果的现象;
具体现象是:最近两个月上线的新功能,增加一个时间查询条件,查询最近一个月内的数据;
考虑到表数据后续表数据可能比较多,新增相应的时间索引;
然而在做计划查看语句命中索引情况时,发现执行的是全表扫描;
后将查询时间修改为7天,能命中索引;
查询各方资料后,归结原因为:聚簇因子太高,
即Oracle在执行查询分析时发现需要查询的数据(时间范围),在整张表的时间字段中占比较大(一共才两个月的数据,查询最近一个月的,实际上是整张表的大部分数据都需要查询出来),认为走索引没有意义,从而不走索引。