方案1: 修改表引擎(能改最好)
直接修改表引擎,如果默认是InnoDB,由于该引擎不保存表的具体行数,在数据量上百万后统计基本在1秒以上;
修改为MyISAM;但是分页查询的时候同样是在100万以后的记录查会非常慢;
方案2: 多建一个表用触发器维护
尝试使用插件的自定义count语句,但是能找到的只有select max(id) 这样的,查询数量是模糊结果,不精确
,方法是在原select语句下增加这一块 _COUNT 是固定后缀 getAllUser是查询语句id
<select id="getAllUser_COUNT" resultType="Long">
select max(id) from users</select>;
误差比较大,所以最后采用触发器维护另外一个表;
本文探讨了在数据量达到百万级别时,如何通过修改表引擎和使用触发器维护额外表来提高查询效率。针对InnoDB引擎统计行数慢的问题,提出了转换为MyISAM引擎的方案,并讨论了其分页查询的局限性。此外,还介绍了利用触发器更新计数表的方法。
1239





