說我的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擴展中也是不可能的。