说我的MySQL DB中的users
表包含大量的条目。SQL:使用LIMIT查询时计算匹配结果的数量
我需要经过所有的用户,但我想这样做只是块在同一时间(即使用LIMIT
和OFFSET
):
SELECT * FROM users LIMIT 100 OFFSET 200
是否有可能知道的总数在查询中匹配的用户,但只返回它们的LIMIT数量?
换句话说,是否有可能提前知道用户的总数,而不进行单独的查询?
说我的MySQL DB中的users
表包含大量的条目。SQL:使用LIMIT查询时计算匹配结果的数量
我需要经过所有的用户,但我想这样做只是块在同一时间(即使用LIMIT
和OFFSET
):
SELECT * FROM users LIMIT 100 OFFSET 200
是否有可能知道的总数在查询中匹配的用户,但只返回它们的LIMIT数量?
换句话说,是否有可能提前知道用户的总数,而不进行单独的查询?
可以在(几乎)一个查询做到这一点,利用SQL_CALC_FOUND_ROWS
and FOUND_ROWS()
:
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 100 OFFSET 200;
SELECT FOUND_ROWS();
虽然你仍然出现了两个结果集,实际的查询只执行一次,这样可以节省你的重复编码和可能会浪费CPU周期。
不幸的是没有。您需要执行两个查询:一个用于获取用户总数,另一个用于获取单个用户页面。
select count(*) from users;
select * from users limit 0,10;
在SQL标准中是不可能的。我不知道mysql
很多,但我会认为即使在任何SQL扩展中也是不可能的。