MySQL使用相同的主键(3000万行)更新另一个表中的完整列数据

时间:2013-05-06 07:45:13

标签: mysql database sql-update large-data

我有两个表: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次)。现在它正在工作,但我迫切需要紧固它。

1 个答案:

答案 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上的索引,然后在更新完成后再次添加。