【发布时间】:2011-04-20 08:57:14
【问题描述】:
我正在尝试根据另一个 MySQL 表的信息更新一个表。
我的original 表如下:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
tobeupdated 表看起来像:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
我想根据value(存储在VARCHAR(32)字段中的字符串)使用original中的id更新tobeupdated中的id。
希望更新后的表格如下所示:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
我有一个有效的查询,但速度很慢:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
这会耗尽我的 CPU 并最终导致仅执行一小部分更新的超时(有数千个值要匹配)。我知道value 匹配会很慢,但这是我必须将它们匹配在一起的唯一数据。
有没有更好的方法来更新这样的值?我可以为合并的结果创建第三个表,如果这样会更快?
我尝试了MySQL - How can I update a table with values from another table?,但并没有真正帮助。有什么想法吗?
提前感谢您帮助 MySQL 新手!
【问题讨论】:
-
你的“价值”列有索引吗?
-
你好面条;不,
value目前没有索引。