分页插件pageHelper select count(*)速度慢问题 及解决方案
方案1: 修改表引擎(能改最好)
直接修改表引擎,如果默认是InnoDB,由于该引擎不保存表的具体行数,在数据量上百万后统计基本在1秒以上;
修改为MyISAM;但是分页查询的时候同样是在100万以后的记录查会非常慢;
方案2:重写pagehelper的select COUNT()方法
只需要在mapper接口里面再加上一个方法: 注意命名方式(在查询函数后面增加 _COUNT)和返回类型(必须为long),这样就覆盖了pagehelper的方法了。pagehelper会自动扫描,不需要进行其他的操作。然后在xml里面写查询语句就可以了
备注:我用的pagehelper是1.2.5的版本 (1.1.0版本太低不支持)
List<MaterialProportionRespVO> getMaterialProportion(@Param("dateStart") String dateStart,
@Param("dateEnd") String dateEnd,
@Param("visitType") String visitType,
@Param("deptIdsList") List<String> deptIdsList);
Long getMaterialProportion_COUNT(@Param("dateStart") String dateStart,
@Param("dateEnd") String dateEnd,
@Param("visitType") String visitType,
@Param("deptIdsList") List<String> deptIdsList);
<select id="getMaterialProportion_COUNT" resultType="long">
select count(1) from tb_dept
</selec## 标题t>