开发者社区> 问答> 正文

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

当您限制通常用于分页的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;
哪种方法最好/最快?

展开
收起
保持可爱mmm 2020-05-10 21:03:14 546 0
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倍。来源:stack overflow

    2020-05-10 21:03:31
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载