问题描述
项目中一个复杂的接口耗时过高,该接口使用了PageHelper进行查询结果进行分页,且该查询sql十分复杂。
原因分析:
pageHelper再进行分页之前,会先执行一个 select count(0) from ( 原始sql ) tmp_count
对数据总数进行获取,然后再执行分页sql。
分页sql本身是没有问题的,但是PageHelper在获取总数的时候,会执行那个复杂的sql然后计算总数,这个是没有必要的。
解决方案:
PageHelper 5.0.4 之后就开始支持手写 count 查询,即可以自定义总数查询的sql。
更加完善的说明即用法请查看 PageHelper文档