MySQL更新列,一对多

时间:2015-09-14 12:14:13

标签: mysql sql-update left-join

我有以下表格:

t1, 418932 rows
t2, 461904 rows

这些列:

t1 columns: ID NUMBER TITLE
t2 columns: ID NUMBER NAME

t1示例

1 123 The Iliad
2 124 The Inferno
3 125 Freakonomics

t2示例

1 123 Homer
2 124 Dante
3 125 Levitt
3 125 Dubner

如此处所示,t2可以为t1中的NUMBER提供多个不同的NAME条目。我想将t1.ID复制到t2.ID,由NUMBER加入。我尝试了几种不同的变体,包括:

UPDATE t2
LEFT JOIN t1 ON t2.NUMBER = t1.NUMBER
SET t2.ID = t1.ID

UPDATE t1, t2 
SET t2.ID = t1.ID 
WHERE t2.NUMBER = t1.NUMBER

但两者都很慢,例如,一小时后,只复制了约800行。我的服务器有32GB内存,所以内存不是问题。

任何人都可以建议更好,更快或更有效的方式来编写此查询吗?或者这种速度是否正常?

提前致谢。

修改

解决。正如Zafar的评论所暗示的那样,我忘了在两个表格中添加一个索引。

0 个答案:

没有答案