gpt4 book ai didi

ruby-on-rails - 使用 ActiveRecords 和 Rails 获取大量记录的最快方法(find_each 很慢)

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:05 25 4
gpt4 key购买 nike

我有一个包含超过 50 万条记录的表,目前我正在以这种方式获取数据:

  Account.find_each(:conditions =>{:status =>STATUS[:waiting]}) do |user|    
unless user.games.include? game
begin
user.account_games.create!(:game_id => game.id,:status => STATUS[:waiting])
user.activate
rescue Exception => e
$LOG.error "Error : #{e.to_s}"
end
end
end

现在我不确定我在这里做错了什么,但可以肯定的是,这很慢,我不知道是 find_each 还是其他什么,但如果你能提供,我将不胜感激我有任何提示可以使它更快。

提前致谢

最佳答案

发生了两件事:

首先是一个选择查询-

 @account = Account.where(:status =>STATUS[:waiting])

其次是在每个上创建 -

@account.each do |user|

unless user.games.include? game
begin
user.account_games.create!(:game_id => game.id,:status => STATUS[:waiting])
user.activate
rescue Exception => e
$LOG.error "Error : #{e.to_s}"
end
end
end

更新:

有一个值得注意的Rails Performance Tip: Query Optimization通过 Anand

同时检查 QueryReviewer gem .

除此之外,还有许多因素可以加快性能,例如某些在帖子中 Active Record Query Interface Optimization .

关于ruby-on-rails - 使用 ActiveRecords 和 Rails 获取大量记录的最快方法(find_each 很慢),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870557/

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