2011-08-16 14 views
1

関連するテーブルから同じスキーマを持つ関連する別のテーブルにデータをコピーする最適な方法は何ですか?表は1対多の関係で接続されています。関連テーブルから別の関連テーブルにデータをコピーする最も良い方法は何ですか?

は私がやりたいことは、特定のcity.idfirm2へととしてfirmから行をコピーすることで、スキーマ

firm 

id | name | city.id (FK) 

employee 

id | lastname | firm.id (FK) 

firm2 

id | name | city_id (FK) 

employee2 

id | lastname |firm2.id (FK) 

、次の点を考慮彼らのemployeesテーブルemployee2にしっかりとassosiated。

私はそう、私はテーブルの新しいIDを取得するためにSELECT nextval('seq_name')を呼び出す必要がありposgresql 9.0を使用します。

は、今のところ私はこのクエリは、単にJavaのバックエンドサーバ内のすべての行を反復実行しますが、膨大なデータ量(50 000従業員と企業の2000年)に、それはあまりにも多くの時間(1-3分)かかります。

私は、例えば一時テーブルにデータを選択し、それを行うには、他の多くのトリッキーな方法がある思ったんだけど?または、おそらくstoreプロシージャを使用し、バックエンドサーバーでのバッファリングを避けるためにcursrorで行を反復処理しますか?

答えて

1

これは単にテーブルのあなたの唯一の主キーとしてシーケンスまたはID値を使用することによって生じた問題の一つです。現実のユニークなインデックス/プライマリキーがある場合

、その後、あなたはそれに参加することができます。もう1つの選択肢は、シーケンスでテーブルを埋めるときにマッピングテーブルを作成し、マッピングテーブルに参加することによって子テーブルのFKに挿入できるようにすることです。ループの必要性を完全に取り除くわけではありませんが、少なくとも一部のインサートはセットベースのアプローチに移行します。

関連する問題