gpt4 book ai didi

mysql - 更高效的事件记录分组

转载 作者:行者123 更新时间:2023-11-29 12:46:43 25 4
gpt4 key购买 nike

我尝试检查 2.5 秒间隔的记录,并根据计数将对象添加到数组中。这种方法可行,但速度太慢。谢谢

   @tweets = Tweet.last(3000)
first_time = @tweets.first.created_at
last_time = @tweets.last.created_at
while first_time < last_time

group = @tweets.where(created_at: (first_time)..(first_time + 2.5.seconds)).count
if group == 0 || nil
puts "0 or nil"
first_id + 1
array << {tweets: 0}
else
first_id += group
array << {tweets: group}
end
first_time += 2.5.seconds
end
return array.to_json
end

最佳答案

您真正需要的是对您检索的记录使用 group_by 方法:

grouped = @tweets.group_by do |tweet|
# Convert from timestamp to 2.5s interval number
(tweet.created_at.to_f / 2.5).to_i
end

这会返回一个哈希值,键是时间间隔,值是推文数组。

您在示例中所做的操作可能会产生数千个查询的效果。始终查看 log/development.log 以了解后台发生的情况。

关于mysql - 更高效的事件记录分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com