MySQL 怎么做 二维统计?如何 将列内的数据求和,行内的数据求和

liangchaoxi 2014-05-06 11:05:49
目前是这样的有这样一个表:

ID F1 F2 F3 …… F200
1# 7 3 6 7
2# 5 21 1 2
6# 4 1 2 1
14# 5 2 2 1
24# 3 3 1 2
6# 1 5 8 4
1# 2 8 2 1
… … … … … …
3# 1 14 2 … 0


要做出这样的二维统计,按设备号划分排列:

ID F1 F2 F3 …… F200 sum
1# 127 310 146 227 1052# 235 215 145 226 241
3# 254 122 255 198 864# 225 214 269 122 158
5# 310 243 199 122 1626# 169 125 148 314 179
7# 214 328 211 124 281… … … … … … …
33# 137 147 122 … 220 125 1136 1278 1231 … 1186 10025


我用了这样一种方法来统计

select ID,sum(F1) as F1 ,sum(F2) as F2 ,sum(F3) as F3 ……sum(F200) as F200,sum(F1+F2+.....+F200) as sum from tableF group by ID with rollup ;

但这样的方法很慢,我统计146w条记录花了48s。好恐怖。我给记录加时间字段,然后在SQL语句中加入时间限定条件:

select ID,sum(F1) as F1 ,sum(F2) as F2 ,sum(F3) as F3 ……sum(F200) as F200,sum(F1+F2+.....+F200) as sum from tableF where time between time1 and time2 group by ID with rollup ;

我给她一个时间范围[time1,time2] 这段时间范围内的记录数大概 7万左右,但是搜索速度还是 40几秒,并没有相比查整个时间范围少多少。

我之后把数据库的容量减少到14w,这时候统计14w条 耗时2.56s ,我改时间限定范围 这个范围内 记录为7000多条,耗时0.48s,改成范围内为1400条 ,耗时为0.36s 改成200 耗时为.032s

这样的速度还是不能满足,请问我该如何做?
...全文
134 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangchaoxi 2014-05-06
  • 打赏
  • 举报
回复
额,排版乱了,上图吧 ,表是这样的


要统计成这样:

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧