ITPub博客

首页 > 数据库 > Oracle > Oracle SQL不走索引小记

Oracle SQL不走索引小记

原创 Oracle 作者:qishao7232 时间:2015-07-23 21:58:21 0 删除 编辑
SQL执行计划不走索引
一、优化器认为走全表扫描更优。
在这种情况下,需要重新分析一遍表,更新表的状态,有助于优化器分析出正确的执行计划。

analyze table tablename compute statistics;

analyze index indexname compute statistics;

或者
execdbms_stats.gather_schema_stats( -
ownname => 'SCOTT', -
options => 'GATHER AUTO', -
estimate_percent => dbms_stats.auto_sample_size, -
method_opt => 'for all columns size repeat', -
degree => 15 -
)
二、优化器模式
使用了all_rows模式
三、无法使用索引。
无法使用索引是由于sql写法有问题。
1、建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念。
2、在包含有null值的table列上建立索引。
3、在索引列上使用函数时不会使用索引。
select * from table_name from to_char(date,'YYYY/MM/DD')='2015/01/01' 不走索引
select * from table_name from date=to_date('2015/01/01','YYYY/MM/DD') 走索引
4、在索引列上有隐身转换
5、<> 运算符
6、not like 运算符
7、
not in ,not exist
8、NULL值比较

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

请登录后发表评论 登录
全部评论

注册时间:2014-03-12

  • 博文量
    8
  • 访问量
    26185