使用LIMIT 條件擷取總行數
使用有LIMIT 子句的SQL 查詢進行分頁時,決定總行數變成一個挑戰。標準方法涉及執行查詢兩次,一次不使用 LIMIT 子句來取得行計數,然後再次使用 LIMIT 來擷取分頁資料。對於複雜的查詢,此過程可能非常耗時。
但是,MySQL 4.0.0 中引入了更有效率的解決方案:
使用SQL_CALC_FOUND_ROWS 和FOUND_ROWS()
_CALCFOf SELECT 語句之後的查詢中。這標記 MySQL 計算總行數而不考慮 LIMIT 條件。要檢索總行數,需要使用 FOUND_ROWS() 函數進行第二次查詢。
用法:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();
注意:在第一個查詢之後立即執行第二個查詢至關重要,因為SQL_CALC_FOUND_ROWS 不會永久儲存行計數。
棄用SQL_CALC_FOUND_ROWS 和FOUND_ROWS()
As從MySQL 8.0.17 開始,SQL_CALC_FOUND_ROWS 查詢未來的MySQL 版本中刪除。建議使用 COUNT 取代:
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) WHERE id > 100;
以上是如何在 MySQL 中使用 LIMIT 高效檢索總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!