使用COUNT()获取总数
- 一般情况下在使用
LIMIT
分页时,还要使用COUNT()
统计不分页的总条数来计算页数。
比如:查询分页数据:SELECT * FROM sys_user WHERE id>10 LIMIT 0,10;
查询总条数:SELECT COUNT(id) FROM sys_user WHERE id>10; - 这样查询的缺点是每次都需要执行两个相同的sql语句,如果
WHERE
条件很多,则影响查询效率。
使用FOUND_ROWS()获取总数
- 想要知道如果没有
LIMIT
会返回多少行,但又不想再执行一次相同的查询语句。那么,在SELECT
查询语句中加入SQL_CALC_FOUND_ROWS
,然后执行FOUND_ROWS()
就可以了。 - 如下图:
- 可以看到
FOUND_ROWS()
得到的结果和COUNT()
一样,如果数据量大并且WHERE
条件多时,FOUND_ROWS()
的效率优势越明显。 - 需要注意的是,语句中的
SQL_CALC_FOUND_ROWS
,如果没有SQL_CALC_FOUND_ROWS
则FOUND_ROWS()
得到的是带有LIMIT
分页的总数。