mysql 分页获取总条数_MySQL查询分页,同时获取总记录数

Mysql分页查询获取totalCount大幅提升性能的办法总结

MySQL查询分页,通常在MySQL中获取记录总数都会使用SELECT COUNT(*) FROM tblName之类的语句

这类语句的缺点是:记录集还需要单独的查询来获取,相当于查询两次,推荐如下写法:

SELECT   SQL_CALC_FOUND_ROWS fldName1, fldName2 FROM tblName WHERE fldName3 = 1 LIMIT 10, OFFSET 20;

SELECT FOUND_ROWS();

虽然有两条SQL语句,但实际上只执行了一次数据库查询

做分页查询中,一般情况下需要两个sql,查当前页数据 和 查记录总条数;但后者的查询结果变化有时候并不大,而且count还占用了很大一部分的查询时间;主要是想用一种省时简便的方法查询符合条件的记录总数,

查询数据使用的sql为:

SELECT SUBSTRING_INDEX(`url`,'/',3) AS host,COUNT(*) AS count FROM `tab` WHERE `type`=4 GROUP BY host HAVING(count >= 5) ORDER BY count desc LIMIT 0,10

以下是网上查到的一些尝试过的方法(不过后来都感觉不太合适,所以,亮点在最后):

方法一: 一般情况下可以使用DISTINCT来查询总数

select count(DISTINCT SUBSTRING_INDEX(`url`,'/',3)) as c from tab where type


版权声明:本文为weixin_35159324原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。