ORACLE-查询数据不走索引,同一列='1'走,='2'不走,且数据量均只占总数据量的很小一部分

WFORLS 2017-02-17 10:44:23
问题描述:有表A,有索引列a,非索引列b

select count(*) from A where a='1' and b='1';走索引
select count(*) from A where a='2' and b='1';不走索引!!!!
select count(*) from A where a='3' and b='1';走索引!!!!
A中,共有记录600万+;a=‘1’的150条左右,a='2'的3300条左右,a=‘3’的13000条左右;
目前测试了a={20个值左右},只有a='2'的时候不走索引!!!!

求大神指点!!!
...全文
908 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sych888 2017-03-03
  • 打赏
  • 举报
回复
从数据量上来看,应该是走的 先看看表、索引的最后分析时间 然后再收集一下统计信息看看
jdsnhan 2017-02-20
  • 打赏
  • 举报
回复
对于表和索引都重新收集统计信息
POM_24 2017-02-17
  • 打赏
  • 举报
回复
经常遇到,参数不同的语句或者多加了AND条件后执行的时候,执行计划不一致; 使用/*+ordered*/ 或者子 查询能够解决的; 同求原因!
卖水果的net 2017-02-17
  • 打赏
  • 举报
回复
收集一下统计信息吧; exec dbms_stats.gather_table_stats(user,'A',cascade=>true);

3,497

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧