主页>技术知识>详情

mybatis sql查询条件有两个字段同时判断数字大于等于0时查询效率非常慢

villain/2022-02-23/126阅读 /0评论
mybatis sql查询条件有两个字段同时判断数字大于等于0时查询效率非常慢简介: 将sql语句在数据库查询速度不过1秒都不到在在后台却发现非常慢,通过打印dao方法时间和看mybatis log发现速度确实是很慢不是其他问题,慢就慢在同时有两个字段判断小于等于0所致,有什么好的

mybatis sql查询条件有两个字段同时判断数字大于等于0时查询效率非常慢

将sql语句在数据库查询速度不过1秒都不到在在后台却发现非常慢,通过打印dao方法时间和看mybatis log发现速度确实是很慢不是其他问题,慢就慢在同时有两个字段判断小于等于0所致,有什么好的方法优化一下吗


解决方法:我咋觉得,这个xml配置就是错误的呢?里面sql出现了<>这两种符号,其中一个必然需要使用cddata包裹,xml才不会错误吧?
回复 @ycwangrd : 我的idea 2021.3版本没有对xml中的大于小于号做特殊处理,怎么写的怎么显示。
回复 @kakai : 这个是idea显示效果问题,源码肯定是>=
回复 @kakai : 包裹整个条件语句应该不需要,只要把特定符号包裹进去,我觉得就行了
我也觉得是他这个xml大于小于号的问题,要么使用转义符,要么使用 CDATA包括整个条件语句

你先把to_char换成to_date放到表达式右边吧。这是一眼就能看到的错误SQL写法。你所说的数字判断到底是不是拖慢的因素,走一个执行计划分析看一下。


跑执行计划分析,这看的出个啥


楼上说得是对的,题主需要的是跑个计划分析。与其在程序里分析SQL语句,不如直接 在数据库里跑一下计划分析或explain。计划分析会告诉你哪一段sql脚本执行的速度,这时再针对于不同的情况采用不同的优化方案这才样会比较好。


各位审题审题!“将sql语句在数据库查询速度不过1秒都不到在在后台却发现非常慢” 


回复 @西红柿幽幽子 : 看具体数据库了。oracle 就很简单
回复 @魔力猫 : 正常查验慢sql问题是,使用数据库工具都会设置返回所有结果集,除非博主忘了。关于“预编译SQL和写死数值的SQL,执行计划可能完全不一样。”有没有什么方法,毕竟预编译sql执行计划没地查看
数据库的开发客户端,一般只返回结果集的前几十条。如果你返回数据超大。就会出现在客户端执行速度好像很快,实际业务超慢的情况。 还有就是执行计划,开发客户端和应用里面,走了两个不同的执行计划。预编译SQL和写死数值的SQL,执行计划可能完全不一样。 所以优化SQL,必须 真实确认执行计划。

复杂SQL不建议用orm


开启MyBatis plus SQL日志打印,看看生成的SQL?

(哪俩小于等于0的字段?给的信息不全,无法判断)


打印下执行sql查看执行sql在数据库中的执行速度


还是得深入排查,不太可能是mybatis导致的


explain 看执行计划

本文用户投稿或网站收集转载,如有侵权请联系本站。