SQL 效能:SELECT SQL_CALC_FOUND_ROWS 與SELECT COUNT(*)
考慮一個場景,您需要限制傳回目的的行數用於分頁目的的SQL 查詢。要確定記錄總數,主要有兩種方法:
方法 1:SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10; SELECT FOUND_ROWS();
方法 2:SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10; SELECT COUNT(*) FROM table WHERE id > 100;
問題來了:哪個哪一種方法比較有效?
最佳方法:視情況而定
根據 MySQL 性能博客,沒有明確的答案。部落客 Peter Zaitsev 建議最佳方法取決於索引配置和其他因素。
一般共識
但是,許多評論針對博客文章似乎表明 SQL_CALC_FOUND_ROWS 通常比運行兩個查詢慢。報告的效能損失可能會很大,可能會慢 10 倍。
以上是'SQL_CALC_FOUND_ROWS 與 COUNT(*):哪種方法分頁更有效?”的詳細內容。更多資訊請關注PHP中文網其他相關文章!