約 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 が含まれます (もちろん)。
したがって、私がやりたいことは、一連のエンティティ バージョンとすべての依存関係を読み取り、依存関係をそれぞれのエンティティ バージョン (存在する場合) に関連付けることです。
また、明確にしていない場合は、データベースへの変更について話しているわけではありません。実行時にメモリ内の関連付けを設定したい。