同一SQL语句传不同的变量值作为条件有的走索引有的不走

今天优化公司项目的时候,发现一个搜索功能,搜索有的状态值很快,搜索有的状态值确慢的异常!

通过PLSQL优化器查看SQL的执行计划发现,查询审批中状态的时候就特别快,而查询审批通过状态的数据就异常的慢,两个查询是统一SQL,只是查询条件的变量值不一样。

查询条件where中的该查询条件是加了索引的,大神可能会问,为什么在一个状态字段上加索引?额,因为这是一个有了一定历史的项目了.....先不说这个。

同样的SQL语句,传入的变量的值不一样,有的变量值走的索引,而有的没有走索引。

通过查询发现,整个表中状态为审批中的只有88条数据,而处于审批通过状态的数据则由两百八十万条还多。

目测是oracle优化器在检查到数据量后选择了不同的执行计划了,虽然的同样的SQL,但是数据情况不一样,执行计划也是不一样的。

 

posted @   四叶笔记  阅读(668)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示