列中有索引而执行计划不走索引的原因之一的验证

本文探讨了Oracle优化器在某些情况下选择全表扫描而非索引的原因,重点在于集簇因子的概念。通过实验展示了当集簇因子远大于数据块数量时,全表扫描可能更优。通过对数据进行排序并重新插入,证明了当集簇因子接近时,优化器会选择使用索引。
摘要由CSDN通过智能技术生成

许多ORACLE开发人员对于当他们只检索很少量的行时优化器选择全表扫描而感到困惑,而没有意识到优化器考虑了表中列值的集簇因子。 

下面这一段是Oracle 手册中关于CLUSTERING_FACTOR的说明:

Indicates the amount of order of the rows in the table based on the values of the index.

  • If the value is near the number of blocks, then the table is very well ordered. In this case, the index entries in a single leaf block tend to point to rows in the same data blocks.

  • If the value is near the number of rows, then the table is very randomly ordered. In this case, it is unlikely that index entries in the same leaf block point to rows in the same data blocks.

下面引用下CUUG给出的clustering_factor对索引列的影响的图,希望作者不要介意。

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值