首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MySQL计数+ GROUP-BY的时间比GROUP-BY长

为什么MySQL计数+ GROUP-BY的时间比GROUP-BY长
EN

Stack Overflow用户
提问于 2012-02-20 03:05:17
回答 2查看 146关注 0票数 0

我只是在试着理解这背后的机制。有两个查询

代码语言:javascript
复制
SELECT SQL_NO_CACHE count( id ) AS cnt FROM `users` GROUP BY country
SELECT SQL_NO_CACHE id FROM `users` GROUP BY country

id是主要的,国家/地区未编制索引。为什么查询with count的运行时间要长得多。根据我的理解,为了对表的内容进行分组,您无论如何都需要遍历所有行?如果是这样的话,为什么它不算数,因为它是按分组的?或者,如果不是这样,它如何在不遍历所有行的情况下进行分组,如何跳过其中的一些行?

EN

回答 2

Stack Overflow用户

发布于 2012-02-20 03:08:17

您的查询中没有计数-您确定这就是问题所在吗?AS cnt所要做的就是重命名该特定的列。我几乎100%确定这是因为您首先运行了这里列出的第一个查询,因此当您运行第二个查询时,MySQL可以从内存中提供结果,而不必访问磁盘。毕竟,查询是相同的-您所更改的只是结果中id列的名称。

票数 0
EN

Stack Overflow用户

发布于 2012-02-20 03:09:17

你的查询不涉及任何计数,如果你想计数,你应该使用

代码语言:javascript
复制
SELECT SQL_NO_CACHE COUNT(id) FROM `users` GROUP BY country

第一个问题在逻辑上需要更多的时间来运行,因为它实际上是在创建一个新表。(因为cnt是这样做的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9352234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档