MySQL如何执行有限制的聚合查询?

MySQL如何执行有限制的聚合查询?,mysql,Mysql,它是否对所有可能的结果进行分组,然后将在给定的限制中找到的结果发回?限制子句只是对返回的记录的选择-它与查询本身返回的值无关。例如,如果对只返回5行的查询使用LIMIT 10,则只能得到5行。如果查询返回11+行,则只能得到10行。对于使用LIMIT一致返回相同结果的查询,需要指定orderby子句 请考虑以下步骤中出现的查询: 无订单或限制的查询 ORDER BY应用于步骤1的查询输出的条件 限制应用于步骤1和2输出的标准 如果没有指定ORDER BY,则不执行该步骤。MySQL手册中的此页解

它是否对所有可能的结果进行分组,然后将在给定的
限制中找到的结果发回?

限制
子句只是对返回的记录的选择-它与查询本身返回的值无关。例如,如果对只返回5行的查询使用
LIMIT 10
,则只能得到5行。如果查询返回11+行,则只能得到10行。对于使用
LIMIT
一致返回相同结果的查询,需要指定
orderby
子句

请考虑以下步骤中出现的查询:

  • 无订单或限制的查询
  • ORDER BY
    应用于步骤1的查询输出的条件
  • 限制
    应用于步骤1和2输出的标准

  • 如果没有指定ORDER BY,则不执行该步骤。

    MySQL手册中的此页解释了优化使用LIMIT的查询的方法:

    简而言之,它不只是简单地计算整个结果集,然后向您发送前N行


    有一些事情会阻止优化,包括使用HAVING子句和使用SQL\u CALC\u FOUND\u ROWS。

    没错,但我想问
    LIMIT
    是否为
    groupby
    的整个输出提供了限制链接页面回答了这句话中的问题:“在某些情况下,可以通过按顺序读取键(或对键进行排序),然后计算摘要,直到键值发生变化,来解决GROUP BY。在这种情况下,“限制行计数”不会计算任何不必要的GROUP BY值。“