为何加索引后反而更慢

一个大表(约3千万数据量)有个status字段,只有不同的几个值。我在这个字段加了索引,结果执行计划仍是全表扫描,但是执行时间比之前没加索引的全表扫描更加慢了!!!这是为什么了,执行计划没有用到索引而是全表扫描,这个好理解,因为status上不同值占总数据量的比列很小,用索引显然是需要更高的代价,所以选择了全表扫描。。。。

这里同样的是全表扫描,加索引后更加慢的原因,我是这样理解的:因为加了索引后,在解析的时候oracle就要计算全表扫描和索引扫描的代价,然后选出代价更小的执行计划,加了索引,oracle就有选择的余地,就会进行计算比较,解析时间的差异是变得更慢的原因!!!所以对于这些显而易见不用加索引的列就不要加索引了,避免造成解析时间的消耗。。。。。。

你可能感兴趣的:(性能优化)