为何在查询中索引未被使用

“为什么索引没有被使用”是一个涉及面较广的问题。有很多种原因会导致索引没有被使用。我们可以按照下面一些非常有用的检查列表来检查我们的索引。

排错步骤
  快速检查
  表上是否存在索引?
  索引是否应该被使用?
  索引本身的问题
  索引列或者索引的前置列是否在单表(non-join)查询的 Where 条件中(predicate list)?
  索引列是否用在连接谓词中(join predicates)?
  索引列在 IN 或者多个 OR 语句中?
  索引列是否被函数修改?
  隐式类型转换(implicit type conversion)是什么?
  是否在语义(semantically)上无法使用索引?
  错误类型的索引扫描?
  是否索引列为可空?
  NLS_SORT是否设置为二进制(BINARY)?
  是否使用的是不可见索引(invisible indexes)?
  优化器和成本计算相关问题
  是否存在准确且合适的统计信息(Statistics)?
  一个索引是否与其它的索引有相同的等级或者成本(cost)?
  索引的选择度不高?
  在总体成本中,表扫描的成本占大部分
  访问空索引并不意味着比访问有值的索引高效。
  参数设置
  其它问题
  是否使用了视图/子查询?
  是否存在远程表(remote table)?
  是否使用并行执行(PX)?
  是否是包含了子查询的Update语句?
  查询是否使用了绑定变量?
  查询是否引用了带有延迟约束的列?
  索引提示(hint)不工作
  有用的 hints:

 


 


pxboracle@live.com
2014.08.20 09:21
share you knowledge with the world. 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1254374/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12798004/viewspace-1254374/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值