女神的闺蜜爱上我2017-06-14 10:50:39 0 4 564
[MySQL讨论组]举报回复话题 ↕
select a,sum(b) from c GROUP BY a; select a from c;
假设c表数据量上百万,那怎么优化这2条数据,让执行更快。谢谢了
4
0
分享
三叔 2017-06-14 10:52:394楼
没法从索引上优化,你使用group by 而且没有设定where条件,mysql已经全表读取。而且假如是上百万的数据,个人不提倡在表中直接用sum去统计每个a的总数。建议优化是这样的。1.建立定时任务和临时表、统计表2.定时读取一定量的数据,将那段数据统计信息记录到统计表中,将获取一定量数据的最后一个id值作为记录,写入临时表。下次读取时候以该id最为条件。
这样分段统计,可以满足你两个优化条件
赞 +0添加回复
给我你的怀抱 2017-06-14 10:52:393楼
先a字段加上索引吧
某草草 2017-06-14 10:52:392楼
MySQL如何优化GROUP BY
黄舟 2017-06-14 10:52:391楼
建立复合索引(a,b),两个sql都会走索引扫描
另外对于统计类sql肯定是放在专门的报表库做的,定时分段统计
三叔 2017-06-14 10:52:394楼
没法从索引上优化,你使用group by 而且没有设定where条件,mysql已经全表读取。而且假如是上百万的数据,个人不提倡在表中直接用sum去统计每个a的总数。建议优化是这样的。
1.建立定时任务和临时表、统计表
2.定时读取一定量的数据,将那段数据统计信息记录到统计表中,将获取一定量数据的最后一个id值作为记录,写入临时表。下次读取时候以该id最为条件。
这样分段统计,可以满足你两个优化条件
赞 +0添加回复
给我你的怀抱 2017-06-14 10:52:393楼
先a字段加上索引吧
赞 +0添加回复
某草草 2017-06-14 10:52:392楼
MySQL如何优化GROUP BY
赞 +0添加回复
黄舟 2017-06-14 10:52:391楼
建立复合索引(a,b),两个sql都会走索引扫描
另外对于统计类sql肯定是放在专门的报表库做的,定时分段统计
赞 +0添加回复