MySQL-mysql 分组求和的优化
SELECT tagcode,COUNT(1) AS tagconut FROM ht_user_promotion GROUP BY tagcode ORDER BY COUNT(1) DESC
数据表你可以想成只有id,tagcode 这两字段,
数据有几百万条(现在有3百万),
求,怎么优化,查询很慢。!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以给tagcode加上索引试试.
select count(id) as tagcount ,tagcode from ht_user_promotion group by tagcode order by tagcount desc
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一下
不知道还有没有更好的办法. 以上仅供参考.