你的位置:首页 > 数据库

[数据库]Oracle不走索引的原因


Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?本文我们主要就介绍这部分内容,接下来就让我们一起来了解一下  .
    
    不走索引大体有以下几个原因:
    
    你在Instance级别所用的是all_rows的方式
    
    你的表的统计信息(最可能的原因)
    
    你的表很小,上文提到过的,Oracle的优化器认为不值得走索引  .
    
    解决方法:
    
    可以修改init.ora中的OPTIMIZER_MODE这个参数,把它改为Rule或Choose,重起数据库  .也可以使用4中所提的Hint  .
    
    不走索引的其它原因:
    
    1、建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念  .
    
    2、在包含有null值的table列上建立索引,当时使用select count(*) from table时不会使用索引  .
    
    3、在索引列上使用函数时不会使用索引,如果一定要使用索引只能建立函数索引  .
    
    4、当被索引的列进行隐式的类型转换时不会使用索引  .如:select * from t where indexed_column = 5,而indexed_column列建立索引但类型是字符型,这时Oracle会产生隐式的类型转换,转换后的语句类似于select * from t where to_number(indexed_column) = 5,此时不走索引的情况类似于case3  .日期转换也有类似问题,如: select * from t where trunc(date_col) = trunc(sysdate)其中date_col为索引列,这样写不会走索引,可改写成select * from t where date_col >= trunc(sysdate) and date_col < trunc(sysdate+1),此查询会走索引  .
    
    5、并不是所有情况使用索引都会加快查询速度,full scan table 有时会更快,尤其是当查询的数据量占整个表的比重较大时,因为full scan table采用的是多块读,当Oracle优化器没有选择使用索引时不要立即强制使用,要充分证明使用索引确实查询更快时再使用强制索引  .
    
    6、<>
    
    7、like'%dd'百分号在前  .
    
    关于Oracle执行计划不走索引的原因的相关知识的总结就介绍到这里了,希望本次的介绍能够对您有所收获!

 

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

 

【java框架源码下载】

 




四川跟团旅游报价多少四川旅游必去的地方是四川旅游必去景点排名四川旅游地图线路大全深圳去贵州旅游报价2015英德风车节时间?清远英德风车节几号开幕? 2015英德风车节什么时候开始?清远英德风车节开始时间? 2015五一两江四湖门票价格?五一到桂林两江四湖门票多少钱? 桂林两江四湖三月三门票多少钱?两江四湖三月三门票价格? 游汉家发祥地 赏中国最美油菜花 过完年 解腻的顶级素食摆上台[二] 2015三八节华南植物园女士门票免费吗?广州华南植物园三八妇女节门票价格? 三月花开 专家指点盐城市区绝佳赏梅处 天降长假哪里去随州看千年银杏谷 石家庄有什么好玩的地方呢?石家庄秋天去哪赏红叶? 天降长假哪里去 大悟观婀娜多姿乌桕 上海南京路好玩吗?上海南京路购物攻略 去马尔代夫带些什么东西好? 马尔代夫有哪些免税店?具体地址在哪里? 泰国手机卡怎么拨打国内手机? 马尔代夫要不要给小费?如何给小费? IDT72V3642L15PQF Datasheet IDT72V3642L15PQF Datasheet IDT5V9885BPFGI Datasheet IDT5V9885BPFGI Datasheet IDT71V3558SA133BQG Datasheet IDT71V3558SA133BQG Datasheet 包头到香港澳门旅游价格 包头到香港澳门旅游价格 包头到香港澳门旅游价格 郑州到香港旅游价格 郑州到香港旅游价格 郑州到香港旅游价格 佳木斯跟团去港澳价格 佳木斯跟团去港澳价格 佳木斯跟团去港澳价格