我有大约 500K 条目的表“父母”和大约 1M 条目的表“孩子”。“父母”有_许多“孩子”。如果我做:
parents = Parent.find(:all, :conditions => {:id => [very large array]}, :include => [:children])
生成的“children”选择以建立关联具有明确的 id,并且 id 的数量几乎与“children”表中的条目数一样大。(实际选择大约需要两个小时!)我想明确地阅读整个“孩子”表(它要快得多,几秒钟)并明确地将每个“孩子”条目与其父项关联起来,以便 parent.children 正常工作方法。
我怎么做?
================
谢谢,马特里克。
我的描述不准确,因为我只是想表达我的问题的轮廓,即我希望能够在不使用“官方" 用于查找的 Rails 机制。换句话说,我想分别读取来自父母的条目和来自孩子的条目,然后将孩子的条目与他们的父母相关联。
我正在使用 Postgres,所以我会给你表格的相关部分。父表是实体版本。子表是依赖项。
对于实体版本:
id | integer | not null default nextval 'entityversions_id_seq'::regclass)
"entityversions_pkey" PRIMARY KEY, btree (id)
对于依赖项:
id | integer | not null default nextval('dependencies_id_seq'::regclass)
parent_entityversion_id | integer | not null
...
Indexes:
"dependencies_pkey" PRIMARY KEY, btree (id)
"index_dependencies_on_parent_entityversion_id" btree (parent_entityversion_id)
parent_entityversion_id 包含父实体版本的 id(当然)。
所以我想要做的是读取一组实体版本和所有依赖项,然后将依赖项与它们各自的实体版本相关联,如果有的话。
而且,如果我没有说得很清楚,我不是在谈论对数据库的任何更改。我想在运行时设置内存关联。