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

永远滴神 发布于 01/10 09:10
阅读 734
收藏 0

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

加载中
1
sxgkwei
sxgkwei
我咋觉得,这个xml配置就是错误的呢?里面sql出现了<>这两种符号,其中一个必然需要使用cddata包裹,xml才不会错误吧?
kakai
kakai
我也觉得是他这个xml大于小于号的问题,要么使用转义符,要么使用 CDATA包括整个条件语句
0
魔力猫
魔力猫

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

0
sprouting
sprouting

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

0
ArchitectureMaster
ArchitectureMaster

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

0
西红柿幽幽子
西红柿幽幽子

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

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

复杂SQL不建议用orm

0
ducat7
ducat7

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

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

0
卢先生和斌先生
卢先生和斌先生

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

0
炎黄伙哥
炎黄伙哥

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

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部