一尘不染

哪个最快?从“表”中选择SQL_CALC_FOUND_ROWS,或选择COUNT(*)

mysql

当您限制通常用于分页的SQL查询返回的行数时,有两种方法可确定记录总数:

方法1

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;

哪种方法最好/最快?


阅读 408

收藏
2020-05-17

共1个答案

一尘不染

这取决于。请参阅有关此主题的MySQL Performance
Blog帖子:http :
//www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-
sql_calc_found_rows/

简要介绍一下:Peter说,这取决于您的索引和其他因素。帖子中的许多评论似乎都说SQL_CALC_FOUND_ROWS几乎总是比运行两个查询要慢-
有时要慢10倍。

2020-05-17