使用内部联接的SQL Update查询会超出锁定等待超时

时间:2013-12-06 09:31:42

标签: mysql sql timeout inner-join

我有以下查询在两个表上运行,每个表有超过80,000和40,000条记录:

update 
profileimageurls piu 
inner join 
profileuniqref pr
on piu.imageurl = pr.uniqueimageurl
set piu.uniqueimagekey = pr.keyid;

profileimageurls的表结构:

 Field              Type                  Null
 KeyID              bigint(20) unsigned   NO
 UserID             bigint(20) unsigned   NO
 ImageURL           varchar(4000)         NO
 UniqueImageURL     varchar(4000)         YES
 Error              varchar(10000)        YES
 Status             tinyint(3) unsigned   YES
 uniqueImageKeyid   bigint(20) unsigned   YES

表profileuniqref的结构:

 Field          Type
 KeyId          bigint(20) unsigned
 uniqueimageurl varchar(4000)
 md5hash        varchar(32)
 md5hashbinary  varchar(16)

当我运行此查询时,我反复获得锁定和等待超时。

2 个答案:

答案 0 :(得分:1)

确保您在连接条件中使用的列上有索引。

答案 1 :(得分:0)

如果你在连接表之间有外键而你正在更新密钥,这可能会导致mysql更新这两个表之间的密钥数据。