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中文网其他相关文章!