spring+mybatis 查询慢

同样一条sql
使用navicat 查询 只要0.05秒
但是在代码中使用mybatis查询 要4-5秒
这是什么原因?
图片说明

7个回答

影响查询效率的因素要知道,
第一,排除一下查询条件menu_id和new_type的索引是不是加上了,
第二,有索引的情况下看看是不是有NULL的值,有NULL的话会进行全表扫描,
第三,数据量大的时候,order by 也会降低速度,看看create_time是什么类型,如果是varchar类型会慢。
第四,你navicat里面加了limit 10了,查询当然快啦。
第五,经过mybatis的封装,程序查询结果返回确实要慢点,但是4-5秒有点不合理了,如果数据量不大的话。
第六,可以使用Redis缓存。

qq_29777207
张音乐 回复qq_36949630: 厉害了
大约 2 年之前 回复
qq_36949630
qq_36949630 mybatis 用的 PageHelper插件 会自动加分页 我navicat中的sql 就是直接复制 控制台日志输入的sql ,问题我找到了 左连的表用到的字段 没加索引 我加上就好了
大约 2 年之前 回复
qq_36949630
qq_36949630 1.
大约 2 年之前 回复
qq_36949630
qq_36949630 1.这两个字段有索引
大约 2 年之前 回复

理论上是不可能的,mybatis只是一个jdbc封装。如果能够确定sql没问题,建议从下面几个角度检查:
1、将mybatis的debug日志打开,打印出执行sql,对比看看是不是sql写错了,特别注意整数和字符串的区别,比如status是整数,那就绝对不能带引号,这样就不会走索引了
2、执行一条其他sql,看看使用navcat和mybatis执行是否有区别

qq_36949630
qq_36949630 回复weixin_37893887: 我放下面了
大约 2 年之前 回复
weixin_37893887
玄尺 回复qq_36949630: 你把mybatis中的sql贴出来,让大家帮你看一下
大约 2 年之前 回复
qq_36949630
qq_36949630 这就是debug 打印出来的sql
大约 2 年之前 回复

你打印下程序执行sql的日志放到工具执行试试,不然就是你代码问题了

batterMRTAN
batterMRTAN 回复qq_36949630: 看你贴的mybatis的代码应该不会这么久的,你看看连接池和提交这语句的时候数据库的连接情况(锁跟连接数)
大约 2 年之前 回复
qq_36949630
qq_36949630 这就是在执行的sql
大约 2 年之前 回复

图片说明

图片说明

看起来没什么问题,看时间也确实卡在数据库执行上,存在并发吗?

那就加缓存,加索引,这是解决慢最常用也是最好的方式

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问