问题

我们在代码中查询,往往比在数据库访问工具上面查询速度要慢,一直没找到原因,测试的时候用的是单表查询,明明数据库里面很快,到代码里面后,就要慢很多。

项目框架

使用的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设为多少要根据自己具体的业务需要和机器的配置来综合判定。