取得 LIMIT 的總行數
使用分頁執行 SQL 查詢時,通常需要取得總行數。通常,這需要執行查詢兩次,一次沒有 LIMIT 子句來決定總計數。
但是,有一種更有效的方法可以實現此目的,而無需訴諸多個查詢。
SQL_CALC_FOUND_ROWS
從 MySQL 4.0.0 開始,可以使用 SQL_CALC_FOUND_ROWS 選項。它指示 MySQL 即使存在 LIMIT 子句也計算總行數。
要使用此選項,只需將其新增在主查詢中的 SELECT 語句之後即可。然後,使用 FOUND_ROWS() 函數執行單獨的查詢來檢索行計數。
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();
注意: 雖然 SQL_CALC_FOUND_ROWS 需要兩個查詢,但通常比執行兩次主查詢要快。但是,從 MySQL 8.0.17 開始,此選項已被棄用,並將在未來版本中刪除。
替代方案:COUNT()
作為替代方案,您可以在單獨的查詢中使用 COUNT() 函數來取得總行數。
SELECT COUNT(*) FROM tbl_name WHERE id > 100;
此方法也需要兩個查詢,但這是一種較新且首選的方法。
以上是如何在 MySQL 中使用分頁高效檢索總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!