MySQL-mysql 分组求和的优化

发布于 2017-01-29 01:12:27 字数 178 浏览 1098 评论 2

SELECT tagcode,COUNT(1) AS tagconut FROM ht_user_promotion GROUP BY tagcode ORDER BY COUNT(1) DESC
数据表你可以想成只有id,tagcode 这两字段,
数据有几百万条(现在有3百万),
求,怎么优化,查询很慢。!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-07-23 13:48:05

可以给tagcode加上索引试试.

select count(id) as tagcount ,tagcode from ht_user_promotion group by tagcode order by tagcount desc

清晨说ぺ晚安 2017-04-23 02:07:32

group by可以走索引, 如果你在explain里看到Using index for group-by, 那么恭喜, 效率一般很高.

但是楼主的sql我大概找了个表 试了一下, explain这样:
Using index; Using temporary; Using filesort
对覆盖索引做filesort. 确实很慢.

我能想到的就是另外整一个summary table, (tagcode, tagcount), tagcount上加索引, 程序维护或触发器维护. 这样效率会高,但是会1) 占用额外空间; 2) 增加了维护成本.

mysql没有物化视图, 不过网上有一些模拟的解决方法. google一下

不知道还有没有更好的办法. 以上仅供参考.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文