- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 Rails 中,find_each和 where用于从 ActiveRecord 支持的数据库中检索数据。
您可以将查询条件传递给where
,例如:
c = Category.where(:name => 'Ruby', :position => 1)
并且您可以将批量大小传递给 find_each
,例如:
Hedgehog.find_each(batch_size: 50).map{ |p| p.to_json }
但是下面两段代码有什么区别呢?
# code 1
Person.where("age > 21").find_each(batch_size: 50) do |person|
# processing
end
# code 2
Person.where("age > 21").each do |person|
# processing
end
代码1是不是每次批量取50个元组,代码2是一次性取完所有元组?欢迎提供更多详细信息。
我的观点是:
where
和find_each
都可以用于批量检索,但是用户可以在使用find_each
时定义批量大小。find_each
不支持传递查询条件。如果我的理解有误,请指正。
最佳答案
事件记录关系不会自动将所有记录加载到内存中。
当您调用#each
时,所有记录都将加载到内存中。当您调用 #find_each
时,记录将按给定的批量大小分批加载到内存中。
因此,当您的查询返回大量记录时,对于服务器的可用资源来说,内存过多,那么使用 #find_each
将是一个不错的选择。
这基本上就像使用 ruby 的惰性枚举 #to_enum#lazy
和 #each_slice
然后 #each
(非常方便)。
关于ruby-on-rails - 在 Rails 中,find_each 和 where 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010091/
使用 PostgreSQL 运行 Rails 3, 我有一个迁移,更新数百万条小记录。 Record.find_each do |r| r.doing_incredibly_complex_stu
有没有办法在django中使用find_each? 根据 rails 文档: This method is only intended to use for batch processing of l
我有类似这样的代码。 @deliveries = User.find_uniq_deliveries(...) . . . (many conditions added using 'named_sc
我有这样的关系 users = User.joins(:occupation).includes(:occupation) count = 0 users.find_each do |u| cou
我有类似这样的代码。 @deliveries = User.find_uniq_deliveries(...) . . . (many conditions added using 'named_sc
我正在查看说明如何使用“find_each”方法的官方 Rails 文档。这是他们给出的例子 Person.where("age > 21").find_each do |person| pers
引用:http://api.rubyonrails.org/classes/ActiveRecord/Batches.html . 是执行find_each线程安全?换句话说,我可以做类似的事情吗 c
给定这个模型: class User < ActiveRecord::Base has_many :things end 然后我们可以这样做:: @user = User.find(123) @u
我收到以下错误: PGError: ERROR: operator does not exist: character varying >= integer LINE 1: ...CT "game
我尝试使用 ActiveRecord 的 find_each 方法运行大约 50,000 条记录的查询,但它似乎忽略了我的其他参数,如下所示: Thing.active.order("created_
我有一个 Rails 应用程序,可以处理 mysql 数据库中的大量(数百万)条记录。一旦开始工作,其内存使用量就会以每秒 50MB 的速度快速增长。使用 oink 等工具,我能够将根本原因缩小到一个
我正在尝试编写一个函数,该函数按一个非常大的表(数百万行)中的某些列进行分组。有什么方法可以让 find_each 处理这个问题,或者如果我不想按 id 列排序是不可能的吗? 我查询的 SQL 是:S
我可以像这样使用 Rails find_each 方法: User.find_each(:batch_size => 10000) do |user| ------ end 使用 find_eac
因为我从物化 View 中提取了数千条记录 Matview , 我想用 find_each将其分成批处理以释放内存。 但是,当我运行以下命令时: Matview.where('p_id > 100')
在 Rails 中,find_each和 where用于从 ActiveRecord 支持的数据库中检索数据。 您可以将查询条件传递给where,例如: c = Category.where(:nam
我正在从我的数据库中加载数据,并且正在使用分组依据进行求和计算。 ElectricityReading.sum(:electricity_value, :group => "electricity_t
我正在尝试逐步浏览使用 find_each 检索到的记录列表。 我根据此 stack overflow post 中的答案构建了我的 Controller 代码。 ,但我仍然收到“没有给出 block
我有一个包含超过 50 万条记录的表,目前我正在以这种方式获取数据: Account.find_each(:conditions =>{:status =>STATUS[:waiting]}) d
我想知道如何在 rspec 中测试 find_each 调用。我习惯于简单地 stub 我希望我的模型返回的内容,因此我不会像这样依赖数据库中的测试数据: MyClass.stub(:find).an
我是一名优秀的程序员,十分优秀!