0

約 500K のエントリを持つテーブル「親」と、約 1M のエントリを持つテーブル「子」があります。「親」 has_many 「子」。私が行った場合:

parents = Parent.find(:all, :conditions => {:id => [very large array]}, :include => [:children])

アソシエーションを構築するための「子」の結果の選択には明示的なIDがあり、IDの数は「子」テーブルのエントリ数とほぼ同じです。(実際の選択には約2時間かかります!)「子」テーブル全体を明示的に読み取り(数秒ではるかに高速です)、各「子」エントリをその親に明示的に関連付けて、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