我有两个表:MySQL数据库中的Final和Primary。 决赛桌:
UID (Primary Key), Surface (Varchar), BCD_Value (Int , Index), Env_Value (Int)
主要表格:
UID (Primary Key), BCD_Value (Int , Index)
每张表中有3000万行。主表具有正确的BCD_Value。我必须在匹配的UID上使用Primary的值更新Final Table的BCD_Value。
我在MySQL命令行中使用了以下内容
update Primary pri, Final fin set fn.BCD_Value = pri.BCD_Value where fin.UID = pri.UID
但36小时后它什么也没做。
此外,我在perl中实现了一个代码,该代码在时间上为5000行创建更新语句(循环它为3000万次/ 5000次)。现在它正在工作,但我迫切需要紧固它。
答案 0 :(得分:1)
尝试转换为ANSI SQL-92
语法
UPDATE Final fin INNER JOIN `Primary` pri
ON fin.UID = pri.UID
SET fn.BCD_Value = pri.BCD_Value
更新所有记录需要时间,因为它也会更新索引。
首先尝试删除Final.BCD_Value
上的索引,然后在更新完成后再次添加。