为了账号安全,请及时绑定邮箱和手机立即绑定

一个mysql group by 优化问题

一个mysql group by 优化问题

鸿蒙传说 2019-04-23 15:18:13
表结构iMoney类型:floatdtEventTime类型:datetimeiType类型:tinyintiAction类型:tinyint现在存在的索引(test)是:iType跟dtEventTime的一个组合索引selectsum(iMoney)asiMoney,iActionfromCostMoneywhereiType=3anddtEventTimebetween'2012-09-29'and'2012-09-30'groupbyiAction这条语句查询后explain下idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLECostMoneyrangetesttest9NULL3893Usingwhere;Usingtemporary;Usingfilesort这个表里面的数据每天特别大,请问有什么好的优化办法?
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

首先,dtEventTime必须要有索引的。而且dtEventTime类型应该是int,不应该使用date的。否则索引效率太低。
其次,分析这个sql的频率高么?
如果只是几次之类的话,而且数据要求不是实时的话,可以考虑循环取数据,程序里面做group和sum的功能。
如果很频繁,数据要求实时,只能考虑单独对每一个iAction建立单独的计数器。
最后,sql应该尽量简单,最理想的情况每次取数据都走索引。数据库更多的是存数据,尽量减少每次sql的cup和io资源。数据库的资源很宝贵,扩展成本比较高。
                            
查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号