如何有效率地計算帶有偏移量和限制的 MySQL 查詢總結果?

Mary-Kate Olsen
發布: 2024-10-23 13:21:01
原創
749 人瀏覽過

How Can I Efficiently Calculate Total Results in MySQL Queries with Offset and Limit?

如何透過MySQL 查詢中的偏移量和限制來確定總結果

在使用Codeigniter 或類似PHP/MySQL 框架的分頁場景中,它變成確定表中的結果總數以計算總頁數至關重要。雖然在沒有限制功能的情況下運行第二個查詢的標準方法在計算上顯得效率低下,但存在優化此流程的替代解決方案。

利用 SQL_CALC_FOUND_ROWS

MySQL 提供了一種特殊的方法函數稱為 SQL_CALC_FOUND_ROWS。透過在具有 limit 和 offset 子句的查詢之前包含此語句,資料庫可確保在沒有限制的情況下傳回的總行數儲存在特殊的內部變數中。這樣可以有效率地檢索總計數,而無需額外的查詢。

例如,以下查詢包含SQL_CALC_FOUND_ROWS:

SELECT * FROM my_table WHERE category_id = ? ORDER BY id LIMIT 10 OFFSET 20
登入後複製

要檢索總計數,只需執行以下查詢:

SELECT FOUND_ROWS()
登入後複製

這將返回表中滿足where 子句的總行數,無論偏移量或限制參數為何。將此值除以限制值,即可獲得分頁所需的總頁數。

透過使用 SQL_CALC_FOUND_ROWS,分頁變得更加高效,無需多次資料庫調用,並確保總頁數的準確計算頁數。

以上是如何有效率地計算帶有偏移量和限制的 MySQL 查詢總結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!