Lin Hong's TECH Blog! 刀不磨要生锈,人不学习要落后 - Thinking ahead

[转]为何在查询中索引未被使用 (Doc ID 1549181.1)

2017-09-02

[转]为何在查询中索引未被使用 (Doc ID 1549181.1)

文档内容

用途

排错步骤

快速检查

表上是否存在索引?

索引是否应该被使用?

索引本身的问题

索引列或者索引的前置列是否在单表(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:

参考

为何在查询中索引未被使用 (Doc ID 1549181.1)

 

~~~~ 2017/09/02 LinHong ~~~~


Similar Posts

Comments