MySQL 怎么做 二维统计?如何 将列内的数据求和,行内的数据求和
目前是这样的有这样一个表:
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
这样的速度还是不能满足,请问我该如何做?