Ruby on rails 在不初始化对象的情况下预加载数据
我正在使用“ActiveRecord::Associations::Preload”预加载数据。预加载大约需要5秒(11000条记录),即使是很困难的查询,运行大约也需要0.2秒 我认为这是因为rails为每个记录启动一个对象。 我不需要对象的任何关系,只需要一些属性 这是实际代码:Ruby on rails 在不初始化对象的情况下预加载数据,ruby-on-rails,performance,activerecord,preloading,Ruby On Rails,Performance,Activerecord,Preloading,我正在使用“ActiveRecord::Associations::Preload”预加载数据。预加载大约需要5秒(11000条记录),即使是很困难的查询,运行大约也需要0.2秒 我认为这是因为rails为每个记录启动一个对象。 我不需要对象的任何关系,只需要一些属性 这是实际代码: pr = ActiveRecord::Associations::Preloader.new pr.preload( Car.all, {:models => :parts }, Mo
pr = ActiveRecord::Associations::Preloader.new
pr.preload(
Car.all,
{:models => :parts },
Model.preload_parts(...)
)
预加载零件返回一个带有一些限制的作用域
如何让预加载程序只启动哈希或结构
-e-
下面是我想做的:
获取用户的所有车辆,加载其模型和每个模型的零件,并对模型和零件进行限制。其目的是显示所有汽车、车型和零件。但您需要从所有11000条记录中选择几个字段吗?如何将它们加载为哈希/结构帮助?也许您应该看看为什么需要预加载它们?我认为创建散列而不是ActiveRecord对象会花费更少的时间。我的示例代码不太正确,因为我没有装载所有的汽车,只是装载了一些。最后我需要零件。通过预加载它们,我可以减少查询的数量。您正在寻找Pull方法-它将覆盖select part并返回结果数组(或散列,取决于db),而不实例化AR对象。为了得到正确的答案,您需要准确地向我们展示您想要实现的目标。我已经更新了问题,但您需要从所有11000条记录中选择几个字段?如何将它们加载为哈希/结构帮助?也许您应该看看为什么需要预加载它们?我认为创建散列而不是ActiveRecord对象会花费更少的时间。我的示例代码不太正确,因为我没有装载所有的汽车,只是装载了一些。最后我需要零件。通过预加载它们,我可以减少查询的数量。您正在寻找Pull方法-它将覆盖select part并返回结果数组(或散列,取决于db),而不实例化AR对象。为了得到正确的答案,你需要准确地向我们展示你想要实现的目标。我已经更新了这个问题