同一SQL语句传不同的变量值作为条件有的走索引有的不走
今天优化公司项目的时候,发现一个搜索功能,搜索有的状态值很快,搜索有的状态值确慢的异常!
通过PLSQL优化器查看SQL的执行计划发现,查询审批中状态的时候就特别快,而查询审批通过状态的数据就异常的慢,两个查询是统一SQL,只是查询条件的变量值不一样。
查询条件where中的该查询条件是加了索引的,大神可能会问,为什么在一个状态字段上加索引?额,因为这是一个有了一定历史的项目了.....先不说这个。
同样的SQL语句,传入的变量的值不一样,有的变量值走的索引,而有的没有走索引。
通过查询发现,整个表中状态为审批中的只有88条数据,而处于审批通过状态的数据则由两百八十万条还多。
目测是oracle优化器在检查到数据量后选择了不同的执行计划了,虽然的同样的SQL,但是数据情况不一样,执行计划也是不一样的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!