首頁 >資料庫 >mysql教程 >如何在使用 LIMIT 和 OFFSET 時有效取得 MySQL 分頁中的總結果計數?

如何在使用 LIMIT 和 OFFSET 時有效取得 MySQL 分頁中的總結果計數?

Linda Hamilton
Linda Hamilton原創
2024-11-27 11:04:12193瀏覽

How Can I Efficiently Get Total Result Count in MySQL Pagination While Using LIMIT and OFFSET?

使用MySQL 偏移量和限制獲取總結果

分頁涉及根據偏移量和限制值從資料庫中擷取資料子集。但是,要確定總頁數,需要了解結果總數。本文提出了一個與計算此總數的有效方法有關的程式設計問題。

問題:

在 PHP/MySQL 中,實作分頁的使用者需要決定給定查詢的結果總數,即使使用 offset 和 limit 參數也是如此。令人擔憂的是,在沒有限制約束的情況下執行第二個查詢來計算行數可能會造成計算浪費。有沒有更資源友善的方法?

答案:

是的,針對這種情況有一個最佳化的解決方案。透過在初始查詢開始時使用 SQL_CALC_FOUND_ROWS 關鍵字,MySQL 將對所有匹配行執行自動計數,而不管偏移量或限制限制。這消除了對第二個查詢的需要。

以下是如何使用SQL_CALC_FOUND_ROWS 修改查詢:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE category_id = ? LIMIT ?, ?

執行此修改後的查詢後,您可以執行以下查詢來擷取總計符合行數:

SELECT FOUND_ROWS()

透過使用SQL_CALC_FOUND_ROWS,您可以透過一次資料庫呼叫即可高效檢索分頁結果和總結果計數。

以上是如何在使用 LIMIT 和 OFFSET 時有效取得 MySQL 分頁中的總結果計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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