假设users我的MySQL DB中的表包含大量条目。
users
我需要遍历所有用户,但是我想一次仅执行大块操作(即使用LIMIT和OFFSET):
LIMIT
OFFSET
SELECT * FROM users LIMIT 100 OFFSET 200
是否有可能知道查询中匹配的用户总数,但仅返回LIMIT个用户?
换句话说,是否可以在不进行单独查询的情况下提前知道用户总数?
您可以使用SQL_CALC_FOUND_ROWS和FOUND_ROWS()在(几乎)一个查询中进行操作:
SQL_CALC_FOUND_ROWS
FOUND_ROWS()
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 100 OFFSET 200; SELECT FOUND_ROWS();
尽管您仍然有两个结果集,但实际查询仅执行一次,从而避免了重复编码和可能浪费的CPU周期。