分頁在使用者體驗中發揮著至關重要的作用,它允許使用者在不壓垮裝置的情況下瀏覽大型資料集。當使用 OFFSET 和 LIMIT 在 MySQL 查詢中實現分頁時,確定結果總數以計算所需的頁數非常重要。
但是,執行多個查詢(一個用於分頁,另一個用於計數)可以是計算效率低下。 MySQL 透過 SQL_CALC_FOUND_ROWS 修飾符提供了更優化的解決方案。
實作SQL_CALC_FOUND_ROWS
要使用SQL_CALC_FOUND_ROWS,只需將其加入原始查詢的SELECT 語句之前即可:
SELECT SQL_CALC_FOUND_ROWS * FROM table_name WHERE category_id = ? LIMIT ?, ?;
檢索結果總數
執行修改後的查詢後,使用 FOUND_ROWS() 函數檢索在沒有 LIMIT的情況下傳回的結果總數子句:$total_results = $this->db->query("SELECT FOUND_ROWS()")->row()->total_results;
計算總頁數
現在,您可以使用以下公式計算總頁數:$total_pages = ceil($total_results / $limit);
結論
透過使用SQL_CALC_FOUND_ROWS,可以在單一查詢中取得結果總數,因此無需重複執行。這種方法優化了資源利用率並提高了分頁機制的效率。以上是SQL_CALC_FOUND_ROWS如何提高MySQL分頁效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!