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

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

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

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

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

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

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

 

posted @ 2022-03-29 22:28  四叶笔记  阅读(573)  评论(0编辑  收藏  举报