0

我正在尝试将许多重复的文本字符串从一个表中分离到另一个表中,以便我转换为外键系统。

提取唯一文本并插入新表很容易,但我尝试了以下更新/子查询以使用新的外键值更新原始表。在 2200 万行中,花费的时间比我想要的要长。

有什么办法可以提高效率吗?我怀疑做一个子查询是一个很好的解决方案。原始表有一个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)

几年前我曾使用过一个例子来做到这一点,但对于我的生活,我搜索的任何东西都没有给我任何与我正在尝试做的事情相关的东西。谷歌无法理解我的意思,我想不出更多的方法来问。

4

1 回答 1

0

一个简单的怎么样:

更新 prism_actions a, prism_players p SET a.player_id = p.player_id 其中 a.player=p.player;

我不知道要快多少,但它会消除子查询。

于 2013-03-01T20:39:08.560 回答