数据库里有很多数据,每条数据都有一个字段是时间(exercisetime),一个字段是值(value),现在前端需要得到是某一区间内所有的数据的值的和。
@data=[]
@totaldata=[]
@name=[]
Shgrade.all.each do |j|
(1..7).each do |i|
sum=0
Shclass.where(:shgrade_id=>j.id).each do |z|
z.users.each do |k|
sum+=k.exercises.where("?<=exercisetime and exercisetime<=?", Time.new((Time.now+(i-7).day).strftime("%Y").to_i, (Time.now+(i-7).day).strftime("%m").to_i, (Time.now+(i-7).day).strftime("%d").to_i), Time.new((Time.now+(i-7).day).strftime("%Y").to_i, (Time.now+(i-7).day).strftime("%m").to_i, (Time.now+(i-7).day).strftime("%d").to_i,23,59,59)).sum(:value)
end
end
@data<<sum
sum=0
end
@totaldata<<@data
@data=[]
end
Shgrade.all.each do |i|
@name<<i.name
end
上面代码的主要功能是得出过去一周的所有数据的值得和。然后将结果放入到数组@totaldata中 但是我发现如果数据量很多的话,这样查找的话很费时,我导入的测试数据有一千条多条,测试时需要将近半分钟。。。 各位有什么经验可以分享的没。。。如何处理大数据