透過分頁確定總行數
在 SQL 查詢中實現分頁時,準確地確定總行數至關重要。執行查詢兩次(一次不使用 LIMIT 子句來計算行數,一次使用 LIMIT 子句來擷取分頁資料)可能不是最佳選擇,特別是對於複雜查詢。
幸運的是,MySQL 提供了一個優雅的解決方案: SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 構造。透過將 SQL_CALC_FOUND_ROWS 新增至主查詢,即使存在 LIMIT 子句,MySQL 也會計算總行數。使用 FOUND_ROWS() 的後續查詢將檢索此計數。
以下是一個範例:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();
此方法比執行查詢兩次更快,並提供準確的總計數。
MySQL 8 中已棄用的函數
在 MySQL 8.0.17 中,SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 已棄用。對於較新的 MySQL 版本,建議改用 COUNT。
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) WHERE id > 100;
透過利用這些技術,開發人員可以精確計算分頁 SQL 查詢中的行數,而無需多個查詢的開銷。
以上是如何有效地決定分頁 SQL 查詢中的總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!