如何透過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中文網其他相關文章!