0

我有大约 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(当然)。

所以我想要做的是读取一组实体版本和所有依赖项,然后将依赖项与它们各自的实体版本相关联,如果有的话。

而且,如果我没有说得很清楚,我不是在谈论对数据库的任何更改。我想在运行时设置内存关联。

4

0 回答 0