oracle+mybatis百万级分页优化
1.增加索引 目的:加速查询总数和分页数据速度
create index 索引名 on 表名(列名);
2.优化分页sql格式(暂未用到,下面会再讲)
SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM table_name) a WHERE ROWNUM <= 40) WHERE rn >= 21
3.自定义优化查询总数sql(count上面1中的增加了索引的字段) mybatis文档解释如下
eg:
<select id="getResultList" resultMap="BaseResultMap"> select * from CAR_DISPATCHING_INFORMATION <if test="@com.wonders.common.util.MyStringUtil@isNotNullOrEmpty(keyWord)"> where CAR_DISPATCHING_INSTITUTE = #{keyWord} </if> </select> <select id="getResultList_COUNT" resultType="long"> select count(CAR_DISPATCHING_INSTITUTE) from CAR_DISPATCHING_INFORMATION <if test="@com.wonders.common.util.MyStringUtil@isNotNullOrEmpty(keyWord)"> where CAR_DISPATCHING_INSTITUTE = #{keyWord} </if> </select>
4.自定义helperDialect
mybatis文档解释如下 这里用的是oracle数据库 可以直接搜OracleDialect 发现果然是实现这个虚类 自定义一个类并优化分页sql 用上面2提到的格式 最后在mybatis配置中指定这个自定义类的全限定名