首頁 > 資料庫 > mysql教程 > SQL_CALC_FOUND_ROWS 與 SELECT COUNT(*):哪個分頁速度較快?

SQL_CALC_FOUND_ROWS 與 SELECT COUNT(*):哪個分頁速度較快?

DDD
發布: 2024-12-31 10:35:14
原創
869 人瀏覽過

SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Which is Faster for Pagination?

效能比較:SQL_CALC_FOUND_ROWS 與SELECT COUNT(*)

使用分頁查找查詢中的記錄總數時,兩個方法出現:SQL和SELECT COUNT(*)。確定最佳方法取決於多種因素。

方法 1:SQL_CALC_FOUND_ROWS

此方法在初始 SELECT 查詢中使用 SQL_CALC_FOUND_ROWS,然後使用 FOUND_ROWS() 擷取總數行數。語法如下:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
登入後複製

方法2:SELECT COUNT(*)

或者,單獨的查詢使用SELECT COUNT(*) 對行進行計數,執行原始查詢後。語法為:

SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
登入後複製

效能評估

每種方法的效能依索引可用性和查詢複雜性等因素而有所不同。 MySQL 效能部落格的一項綜合分析顯示:

  • SQL_CALC_FOUND_ROWS 通常比執行兩個查詢慢, 特別是在索引未最佳化或查詢複雜的情況下。
  • 效能差距隨著行數的增加而拉大
  • 但是,對於具有複雜表達式或子查詢的查詢,由於索引利用率, SQL_CALC_FOUND_ROWS 可能會優於SELECT COUNT(*)。

最終,理想的方法取決於特定的上下文和應用程式要求。正如在性能部落格文章中所述,「這取決於您的索引和其他因素。」

以上是SQL_CALC_FOUND_ROWS 與 SELECT COUNT(*):哪個分頁速度較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板