一、减少查询返回数据量
1、在查询语句中使用 resultMap
,只选取需要的列,减少返回的数据量。
<resultMap id="userMap" type="User"> <id property="id" column="user_id" /> <result property="name" column="user_name" /> <result property="age" column="user_age" /> </resultMap> <select id="getUserById" resultMap="userMap" parameterType="java.lang.Long"> SELECT user_id, user_name, user_age FROM user WHERE user_id=#{id} </select>
2、使用分页查询,限制返回数据量。
<select id="getUser" resultType="User"> SELECT user_id, user_name, user_age FROM user LIMIT #{pageNum}, #{pageSize} </select>
二、合理使用缓存
1、开启二级缓存,使用缓存降低查询次数。
<cache eviction="LRU" flushInterval="600000" size="512" readOnly="true"> </cache>
2、使用查询缓存
<select id="getUser" resultType="User" useCache="true"> SELECT user_id, user_name, user_age FROM user WHERE user_id=#{id} </select>
三、使用动态 SQL
1、使用If标签,根据不同的条件动态生成查询语句。
<select id="getUser" parameterType="User" resultMap="userMap"> SELECT user_id, user_name, user_age FROM user WHERE 1=1 <if test="id != null"> AND user_id = #{id} </if> <if test="name != null"> AND user_name = #{name} </if> </select>
2、使用choose, when, otherwise标签,根据不同情况生成对应查询语句。
<select id="getUser" parameterType="User" resultMap="userMap"> SELECT user_id, user_name, user_age FROM user <where> <choose> <when test="id != null"> user_id = #{id} </when> <when test="name != null"> user_name = #{name} </when> <otherwise> 1=1 </otherwise> </choose> </where> </select>
四、性能调优
1、使用索引加速查询,避免全表扫描。
ALTER TABLE user ADD INDEX user_id_index (user_id);
2、使用延迟加载,减少不必要的查询。
<resultMap id="userMap" type="User"> <id property="id" column="user_id" /> <result property="name" column="user_name" /> <association property="dept" resultMap="deptMap" lazy="true" /> </resultMap> <select id="getUser" resultMap="userMap" parameterType="java.lang.Long"> SELECT user_id, user_name, dept_id FROM user WHERE user_id=#{id} </select> <resultMap id="deptMap" type="Dept"> <id property="id" column="dept_id" /> <result property="name" column="dept_name" /> </resultMap> <select id="getDeptById" resultMap="deptMap" parameterType="java.lang.Long"> SELECT dept_id, dept_name FROM dept WHERE dept_id=#{id} </select>
原创文章,作者:YUAL,如若转载,请注明出处:https://www.506064.com/n/135860.html