0


使用mybatis执行sql语句很慢,但是把sql提出来到终端执行很快

问题现象:在进行接口性能测试时,发现一个查询详情的接口反应速度在10s左右,日志打印定位到一条sql执行执行很慢,于是将sql复制到终端执行,执行速度100ms左右。

使用数据库:pgsql,数据量100w
示例代码:

select * from table_a a join table_b b on a.project_no = b.project_no
and a.id = #{id}

解决方案:①将#替换为$,使用此方法可能导致sql注入

             ②将mapper层查询方法入参从String类型更改为Long类型,并增加#{id,jdbcType = BIGINT}

问题原因:mybatis #替换是使用预编译的方式,会将#{}替换为?,在将参数绑在?上,在入参传入的数据类型和数据库字段数据类型无法对应且数据量大时就会出现替换慢的问题。

标签: mybatis sql 数据库

本文转载自: https://blog.csdn.net/m0_70239336/article/details/134418572
版权归原作者 五九0402 所有, 如有侵权,请联系我们删除。

“使用mybatis执行sql语句很慢,但是把sql提出来到终端执行很快”的评论:

还没有评论