暂无图片
oracle 索引失效的原因
我来答
分享
zhang
2023-09-20
oracle 索引失效的原因
select * from table_a where create_time> #{beginTime}
复制

上面的查询语句,table_a表 create_time 建的有索引,在beginTime的值不同时,会出现有时候走索引有时候不走索引的情况:
beginTime=sysdate-1 不走索引
beginTime=sysdate-1/24 走索引
beginTime=sysdate-20/24 走索引
beginTime=sysdate-23/24 不走索引

奇怪的是,在不同的环境下,走不走索引的条件是不一样的,
上面举例的环境里该表数据量在200万,而同样的表(同样的索引)在另一个环境里(数据量2000万)beginTime=sysdate-3时才会不走索引。

我想了解的是,这里不走索引的判断逻辑是什么,是不是跟数据库设置有关系?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
刘晓华

与谓词选出的记录数跟总的记录数的比例有关, 选出的记录少就走索引,有个参数Optimizer_index_cost_adj是设置这个比例的。

暂无图片 评论
暂无图片 有用 4
打赏 0
zhang

image.png

刚看了看两个环境的数据库这个参数都是100

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

OPTIMIZER_INDEX_COST_ADJ可以设置小一点,比如50或25,再试试

暂无图片 评论
暂无图片 有用 3
打赏 0
张sir

create_time的值的分布一样吗?统计信息一样吗?你可以跑一个10053看一下,oracle是怎么评估的,

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle 如果不用容器数据库,是不是一个实例只能建一个库?
回答 2
已采纳
不是可以包含多个但是一个实例只能够装载一个数据库https://bbs.csdn.net/topics/110024366
adg搭建过程中,备库报错
回答 10
看看你的通道2参数设置服务端,客户端是不是指定的是对的  showparameterlogarchivedest2参数里面设置的服务名对比下tnsname.ora服务名是否一致
oracle-apex pl/sql报错
回答 1
从报错看是当前用户没有FNGETBASE64这个函数,可以尝试用这个用户登录,单独执行这个函数试试。opNameimg:FNGETBASE64(num01||''||op||''||num02);
在openEuler欧拉系统上可以安装Oracle 11g吗?
回答 5
你好大佬可以请教一个问题么。我前面步骤都安装没问题,但是到了输入lsnrctlstatus这块没反应啥也不提示,我检查过了环境变量没有问题。执行sqlplus提示ORA12547:TNS:lostco
oracle提示内存
回答 2
已采纳
oracle@linux8pfile]$sqlplus/assysdbaSQLPlus:Release21.0.0.0.0ProductiononMonNov2214:01:042021Version
ogg初始化后,目标端的复制进程未使用源端提供的scn号启动,导致后续更新的数据目标端不同步,进程都是running的,这个得咋弄
回答 1
可以参考下面办法:重新初始化。目标端利用闪回数据库或者可以的话表空间定点恢复也行,如果trail文件还在,重新指定scn应用。配置oggveridata进行比对,空闲时repair。注:第二个办法需要
id重复无法添加主键
回答 11
已经可以了,使用rownumber找到重复数据的rowid,直接update修改后可以加主键了,感谢感谢
AWR分析报告问题求助:压测的时候业务反馈insert 慢。通过awr发现很多gc buffer busy acquire等待,求解决办法
回答 1
已采纳
减少gc访问,如业务分离logfilesync优化,如优化存储性能dsmiss较高优化sequencecacheSGA调大一点,12G,还没有我笔记本配置大呢
Oracle的grid软件需要和Oracle版本对应吗?
回答 6
grid软件可以用高的版本,向下兼容,一般不建议就是
Oracle 表压缩
回答 1
有几种不同的表压缩类型,都测试过压缩比例了吗?另外就是空间不足,可以检查碎片高的表,shrink,move方式回收碎片。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~