首頁  >  文章  >  資料庫  >  如何在 MySQL 中使用分頁高效檢索總行數?

如何在 MySQL 中使用分頁高效檢索總行數?

DDD
DDD原創
2024-10-27 06:42:02494瀏覽

 How to Efficiently Retrieve Total Row Count with Pagination in MySQL?

取得 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn