高效查询分页统计总记录数问题?

乡村崽 发布于 2017/08/14 15:40
阅读 539
收藏 0

事起:

    在一次项目开发过程中,用到了mybatis pagehelper这个开源的插件,插件解决了分页的繁琐过程是一款非常不错的软件,但是我在实际应用用的是MySQL数据,对于字段和关联的表过多时,进行分页时发现统计总记录数的时候非常的慢,导致体验很不好。

举例:

    select  a,b,d,c,w.......oo from (复杂的子查询);

    统计总记录一般处理方式为:

    select count(*) from (select  a,b,d,c,w.......oo from (复杂的子查询));

    然而这样的统计速度对于mysql数据库来说超级慢,没法忍受。

期望:

    select  count(1) from (复杂的子查询);

如果生成的统计总数的脚本如上,查询总数是非常的快。

问题:

    各位大牛在实际工作中是否有类似过滤显示字段的替换方式来解决对应效率问题?

把例子中的【a,b,d,c,w.......oo】替换成 【count(1)】

期望兼容Oracle的with 语句

 

 

加载中
0
沧海_Sea
沧海_Sea

count(*) 和count(1)并没有区别

 

count的瓶颈应该是在你的子查询那里

0
乡村崽
乡村崽

引用来自“沧海_Sea”的评论

count(*) 和count(1)并没有区别

 

count的瓶颈应该是在你的子查询那里

其实我是想知道有没有更好的办法替换掉对应输出字段,不是优化sql

0
红薯官方
红薯官方

我的做法就是,不要执行count,分页按钮不显示总页数和总记录数,返回数据数量>=每页显示大小 判定有没有下一页。

乡村崽
乡村崽
如果需求上要总数,请问有好的建议吗?
返回顶部
顶部