我试图将大量重复的文本字符串从一个表中分离到另一个表中,以便将其转换为外键系统。Mysql查询有效地将列迁移到外键
拉动独特的文本并插入新表很容易,但我尝试了下面的更新/子查询来使用新的外键值更新原始表。在2200万行上,花费的时间比我想要的要长。
任何方式,我可以使这更高效?我怀疑做一个子查询是一个很好的解决方案。原始表有一个player
col与玩家姓名字符串。我已将所有唯一值转储到单独的表中,并且想要使用新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)
我用了一个例子,几年前要做到这一点,但对于生活我来说,没有我搜索给我任何远程涉及到我想要做的事。谷歌无法弄清楚我的意思,我想不出有什么办法可以问。
对于22M行我认为时间不错。还要介意,如果您使用的是myisam,则会在更新时锁定表或引擎。这可能是瓶颈。 – 2013-03-01 20:47:24