基于ID慢的MySQL更新(150,000条记录)

时间:2016-04-18 04:30:23

标签: mysql sql database query-performance

我正在尝试根据另一个表上的id更新表,但我遇到了一些性能问题。我在table_to_update上有150,000行,在table_to_get_data上有400,000行。

要更新的表格 +----+-----------------+ | id | field_to_update | +----+-----------------+ | 1 | orange | | 2 | apple | | 3 | pear | | 1 | orange | +----+-----------------+

获取数据的表格 +----+-----------------+ | id | field | +----+-----------------+ | 1 | orange | | 2 | apple | | 3 | pear | +----+-----------------+

所以我尝试了3种不同的方式:

方法1:

UPDATE table_to_update t1, table_to_get_data t2
SET t1.field_to_update = t2.field
WHERE t1.id = t2.id

方法2:

UPDATE table_to_update
JOIN table_to_get_data
ON table_to_update.id = table_to_get_data.id
SET table_to_update.field_to_update = table_to_get_data.field

方法3:

UPDATE table_to_update
LEFT JOIN table_to_get_data
ON table_to_update.id = table_to_get_data.id
SET table_to_update.field_to_update = table_to_get_data.field

到目前为止,方法3似乎是最快的,但是,计算更新1000行所需的时间,完成更新整个表需要12个小时。是否有更有效的方法来更新表格?

编辑: 添加了EXPLAIN表 EXPLAIN Table

1 个答案:

答案 0 :(得分:0)

为从两个表加入的列创建索引。

它会为你创造奇迹。