问题
我们在代码中查询,往往比在数据库访问工具上面查询速度要慢,一直没找到原因,测试的时候用的是单表查询,明明数据库里面很快,到代码里面后,就要慢很多。
项目框架
使用的SpringBoot + Mybatis,这里面出问题的只可能是mybatis了,没用原生的JDBC进行测试。
mybatis优化参数
fetchSize 参数默认是10
验证
不加fetchSize="1000", task1执行耗时:3173ms
<select id="findByRoleId" parameterType="long" resultType="com.wang.springmpdemo.entity.RoleResource" fetchSize="1000" >
SELECT
<include refid="allColumns" />
FROM
sec_role_resource
WHERE
role_id = #{param1}
</select>
加了fetchSize="1000", task1执行耗时:97ms
本次实验查询的数据总条数为982条,也就是说加了参数后就只需要1次就能获取完了。
总结
在使用mybatis一次查询大量数据时确实可以通过怎大fatchSize的值来大大提高查询效率,使用也非常简单,具体fatchSize设为多少要根据自己具体的业务需要和机器的配置来综合判定。