gpt4 book ai didi

ruby-on-rails - 性能:最小化数据库命中

转载 作者:搜寻专家 更新时间:2023-10-30 23:21:12 26 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.0.7,我正在尝试尽量减少数据库访问。为此,我从数据库中检索与 User 相关的所有 Article 对象,然后对这些检索到的对象执行搜索。

我做的是:

stored_objects = Article.where(:user_id => <id>) # => ActiveRecord::Relation

<some_iterative_function_1>.each { |...|
stored_object = stored_objects.where(:status => 'published').limit(1)
...
# perform operation on the current 'stored_object' considered
}
<some_iterative_function_2>.each { |...|
stored_object = stored_objects.where(:visibility => 'public').limit(1)
...
# perform operation on the current 'stored_object' considered
}
<some_iterative_function_n>.each { |...|
...
}

stored_object = stored_objects.where(:status => 'published') 代码将真正避免访问数据库(我问这个是因为在我的日志文件中它接缝仍然运行数据库查询每次 迭代)?如果不是,我怎样才能最大限度地减少数据库访问?

P.S.:简而言之,我想做的是处理 ActiveRecord::Relation(一个 的数组)但是调用它的 where 方法接缝命中数据库。

最佳答案

Rails 具有一次获取数据库 block 的功能,然后遍历行而无需再次访问数据库。

有关 find_eachfind_in_batches 的更多信息,请参阅“Retrieving Multiple Objects in Batches”。

关于ruby-on-rails - 性能:最小化数据库命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397262/

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