【问题标题】:COUNT returns total rows ignoring LIMIT in MySQL, why?COUNT 返回忽略 MySQL 中的 LIMIT 的总行数,为什么?
【发布时间】:2019-05-19 13:06:55
【问题描述】:

今天在写一个复杂的查询时,偶然发现即使我在查询中设置了LIMIT,MySQL 服务器也会返回COUNT 的总行数。


例子:

SELECT COUNT(*) FROM `log` LIMIT 10;

输出:

5219

但如果我在没有COUNT 的情况下运行查询,它只会返回 10 行。我的问题是,

COUNT 存在时,为什么MySQL 会忽略LIMIT

【问题讨论】:

    标签: mysql count limit sql-limit


    【解决方案1】:

    LIMIT 用于返回总结果的子集,在您的情况下,结果只有一行,因此无效

    【讨论】:

      【解决方案2】:

      LIMIT 子句的目的是选择有限数量的记录,而count 是聚合函数,它将返回聚合结果。将LIMITCOUNT 一起使用没有任何意义,因为LIMIT 可能会返回任何随机的n 条记录。

      【讨论】:

      • LIMIT 从来没有为我返回随机行,即使没有主键,结果也总是按顺序返回。
      • @RoshanaPitigala 这就是我说可能的原因。因为,根据文档,MySQL 在某些情况下使用索引,而通常它更愿意进行全表扫描
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2017-10-28
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      相关资源
      最近更新 更多