Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在不初始化对象的情况下预加载数据_Ruby On Rails_Performance_Activerecord_Preloading - Fatal编程技术网

Ruby on 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

我正在使用“ActiveRecord::Associations::Preload”预加载数据。预加载大约需要5秒(11000条记录),即使是很困难的查询,运行大约也需要0.2秒

我认为这是因为rails为每个记录启动一个对象。 我不需要对象的任何关系,只需要一些属性

这是实际代码:

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对象。为了得到正确的答案,你需要准确地向我们展示你想要实现的目标。我已经更新了这个问题