ユーザーテーブルを移行するためのスクリプトを作成しています。 基本的に、私は3つのdbテーブルを持っています:イベント、ユーザー、newusers。 usersテーブルはnewusersテーブルに置き換えられ、後で削除されます。 newusersテーブルには、oldusers id(PK)値を持つカラムがあります。SQLクエリのパフォーマンス
events2テーブルには、2人のFKがあります.1人はユーザー、1人はnewusersです。 私は既にレコードユーザーを新しいユーザーに移行する部分を書いています。ここでは、イベント2の表のFKを更新することが苦労しています。
私は次のように書いた:
update events2
set newusersid = newuser.id
from events2 e
inner join newusers newuser on newuser.olduserid = e.userid;
をそれが実行に非常に長い時間がかかります。改善された方法がありますか?
移行の理由の1つは、newusersテーブルのid値を変更して、対応するユーザーレコードに同じPK値を再使用できないということです。あなたの助けのための
おかげで
N.
一時的なインデックスを 'olduserid'に追加して、アップグレードを完了した後で削除する必要があるかもしれません。 – Blazes
「非常に長い時間ですか?これは1回限りの操作です。高速にする必要がありますか? –
@marc_s私はpostgresqlを使用しています8.4 – Nikko