用法说明
分页程序一般由两条SQL组成:
SELECT COUNT(*) FROM ... WHERE ....
SELECT ... FROM ... WHERE LIMIT ...
如果使用SQL_CALC_FOUND_ROWS的话,一条SQL就可以了:
SELECT SQL_CALC_FOUND_ROWS ... FROM ... WHERE LIMIT ...
在得到数据后,通过FOUND_ROWS()可以得到不带LIMIT的结果数:
SELECT FOUND_ROWS()
示例
常规分页查询:
//获取总数
SELECT COUNT(*) FROM users WHERE k='avs';
//获取当前页记录
SELECT id FROM goods WHERE k='avs' LIMIT 10;
使用 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS()方式
SELECT SQL_CALC_FOUND_ROWS goods WHERE k='avs' LIMIT 10;
SELECT FOUND_ROWS(); //获取总数
这虽然是两个sql语句,但是确是查询一次数据库,效率明显提高了一半!
- SQL_CALC_FOUND_ROWS:告诉Mysql将sql所处理的行数记录下来,
- FOUND_ROWS():则取到了这个纪录