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配置中指定这个自定义类的全限定名

经验分享 程序员 微信小程序 职场和发展