当你限制一个SQL查询返回的行数时,通常用于分页,有两种方法来确定总记录数:
方法一
包括 SQL_CALC_FOUND_ROWS
原文中的选项SELECT
,然后通过运行 SELECT FOUND_ROWS()
获取总行数:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
方法二
正常运行查询,然后通过运行SELECT COUNT(*)
得到总行数
SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
哪种方法最好/最快?
最佳答案
这取决于。请参阅有关此主题的 MySQL 性能博客文章:To SQL_CALC_FOUND_ROWS
or not to SQL_CALC_FOUND_ROWS
?
简单总结一下:Peter 说这取决于您的索引和其他因素。该帖子的许多评论似乎都说 SQL_CALC_FOUND_ROWS
几乎总是比运行两个查询慢 - 有时慢 10 倍。
关于mysql - 哪个最快? SELECT SQL_CALC_FOUND_ROWS FROM `table` 或 SELECT COUNT(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/186588/