0

代わりに外部キーシステムに変換するために、多くの重複テキスト文字列をあるテーブルから別のテーブルに分離しようとしています。

一意のテキストを取得して新しいテーブルに挿入するのは簡単ですが、次の更新/サブクエリを試して、元のテーブルを新しい外部キー値で更新してみました。2,200 万行で、思ったより時間がかかりました。

これをより効率的にする方法はありますか?サブクエリを実行することが良い解決策であるとは思えません。元のテーブルには、playerプレイヤー名の文字列を含む列があります。すべての一意の値を別のテーブルにダンプしたので、元のテーブルを新しい ID で更新したいと考えています。

UPDATE prism_actions SET player_id = (SELECT prism_players.id FROM prism_players WHERE prism_players.player = prism_actions.player);
Query OK, 22018608 rows affected (2 hours 21 min 58.97 sec)

私はこれを行うために数年前に例を使用していましたが、私の人生では、私がやろうとしていることにリモートで関連するものは何もありません。Google は私が何を言いたいのか理解できず、これ以上質問する方法が思いつきません。

4

1 に答える 1

0

簡単なことはどうですか:

UPDATE Prism_actions a、prism_players p SET a.player_id = p.player_id where a.player=p.player;

どれだけ速いかはわかりませんが、サブクエリが不要になります。

于 2013-03-01T20:39:08.560 に答える