昨天遇到一个bug,有一个地方的列表展示需要15秒的时候才会出现数据,一开就想到是sql慢查询,想着是不是进过全表扫描而引起的,想到in,null.!等等的关键字,尝试无果这时候想到自己是个管理系统,数据再多也不会太慢.再说这个sql有个判断,查询已审阅的没问题,查询未审阅的就有.想了很久,debug一步一步的更发现
DynamicSqlSource类中的getBoundSql方法中的
DynamicContext context = new DynamicContext(this.configuration, parameterObject);
this.rootSqlNode.apply(context);
这是作用于sql拼接,这里执行了很久.这就是sql拼接的问题
在这里感谢 古月
https://blog.csdn.net/huyande123/article/details/105054029/
给了思路.
修改sql拼接的方法
where d.preedit_id = #{preedit_id, jdbcType=VARCHAR} 改为
where d.preedit_id = '${preedit_id}'
解决了拼接sql时候慢的问题
image.png
ok了!!!