如何在 MySQL 中使用 LIMIT 高效檢索總行數?

DDD
發布: 2024-10-27 02:54:30
原創
860 人瀏覽過

 How to Efficiently Retrieve Total Row Count with LIMIT in MySQL?

使用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中文網其他相關文章!

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