mybatis sql查询条件有时间时查询效率非常慢

来源:互联网 发布:临沂软件开发培训 编辑:程序博客网 时间:2024/06/13 03:48

最近在进行开发时发现一个奇葩的问题,sql在数据库查询速度不过1秒都不到在在后台却发现非常慢,通过打印dao方法时间和看mybatis log发现速度确实是很慢不是其他问题,然后一步步测试,首先加上<![CDATA[]]> 加在整个sql都没用,然后加上<if></>判断发现时间快了点,但还是属于慢,这里发现很奇葩的问题,比如网上查询时间段说什么>,=要转义,经过一步步测试我可以直接写> ,不过<需要转义成&lt; 实践才是那什么真理的,通过打印sql执行时间明确了确实是执行速度慢而不是转json或者其他环节慢,然后通过更换<![CDATA[]]>,还有&lt; 等转义字符发现问题依旧,然后通过写死时间格式为2017-09-25 00:00:00,发现这样速度跟数据库查询一致了,加上参数后就变慢了,这让我确定问题是存在于mybatis底层,可惜我没时间也没能力研究底层,这问题只能将解决方法放在这里,具体原因我会寻求mybatis社区发现这个问题,如果也有大神知道的话希望告诉我,将#换成$发现这问题才消失。真是很无语。

代码放下吧

<!-- 查询部分sql --><sql id="queryCriteria"><if test="StartOperateTime != null"> and ta.OperateTime >= '${StartOperateTime}'  </if> <if test="EndOperateTime != null">and ta.OperateTime  &lt;= '${EndOperateTime}'</if> <if test="CompanyName != null">and tv.DriverName = '%${TrsptDriverName}%'</if></sql>

最后总结下问题:1:不能随便信网上的东西xml中可以写>,  <需要转义 2:mybatis原理需要探究下。

原创粉丝点击