首页 >数据库 >mysql教程 >'SQL_CALC_FOUND_ROWS 与 COUNT(*):哪种方法分页更有效?”

'SQL_CALC_FOUND_ROWS 与 COUNT(*):哪种方法分页更有效?”

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-14 07:30:11128浏览

`SQL_CALC_FOUND_ROWS vs. COUNT(*): Which Method is More Efficient for Pagination?`

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn