COUNT返回总行数忽略MySQL中的限制,为什么?
今天,当我编写一个复杂的查询时,我意外地发现,即使我在查询中设置了COUNT返回总行数忽略MySQL中的限制,为什么?,mysql,count,limit,sql-limit,Mysql,Count,Limit,Sql Limit,今天,当我编写一个复杂的查询时,我意外地发现,即使我在查询中设置了LIMIT,MySQL服务器也会返回COUNT的总行数 例如: SELECT COUNT(*) FROM `log` LIMIT 10; 输出: 5219 但是如果我不使用COUNT运行查询,它只返回10行。我的问题是, 当存在计数时,为什么MySQL会忽略限制 LIMIT用于返回总结果的一个子集,在您的情况下,结果仅为一行,因此没有影响LIMIT子句的目的是选择有限数量的记录,而count是聚合函数,它将返回聚合结果。同
LIMIT
,MySQL服务器也会返回COUNT
的总行数
例如:
SELECT COUNT(*) FROM `log` LIMIT 10;
输出:
5219
但是如果我不使用
COUNT
运行查询,它只返回10行。我的问题是,
当存在计数时,为什么MySQL会忽略限制
LIMIT
用于返回总结果的一个子集,在您的情况下,结果仅为一行,因此没有影响LIMIT
子句的目的是选择有限数量的记录,而count
是聚合函数,它将返回聚合结果。同时使用LIMIT
和COUNT
没有任何意义,因为LIMIT
可能会返回任意n个记录。LIMIT
从未为我返回过随机行,结果总是按顺序返回,即使没有主键。@RoshanaPitigala这就是我说的原因,may。因为,根据文档,MySQL在某些情况下使用索引,而通常它更喜欢执行完整的表扫描