0

我的 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 次)。现在它正在工作,但我迫切需要固定它。

4

1 回答 1

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然后在更新后再次添加。

于 2013-05-06T07:47:36.970 回答