UPDATE语句导致自动终止的进程

时间:2015-01-03 20:54:24

标签: mysql

我想通过在table_2上匹配三个字段来将ID值添加到table_1:

update table_1 t1
join table_2 t2 on t1.col_1 = t2.col_1 
and t1.col_2 = t2.col_2
and t1.col_3 = t2.col_3
set t1.ID = t2.ID;

Table_1有大约300万行,table_2有大约300,000行。这三个字段在table_1中编制索引,并且table_2中的相同字段有唯一索引。当我运行此脚本时,该过程在大约1,200秒后自动终止,并且SHOW PROCESSLIST中的State和Info字段显示为NULL。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

检查运行时的内存量。连接的大小可能对您的操作系统来说太大了。同时运行SHOW PROCESSLIST以查看等待的位置。

作为一种解决方法,您可以编写一个脚本来循环遍历300,000行

foreach t2 rows as row
UPDATE t1
SET t1.id = t2.id
WHERE ...

它不会花太长时间。