使用非FK列匹配的另一个数据更新表

时间:2013-08-06 18:19:21

标签: mysql sql join

我正在开发一个由以前的程序员创建的在线注册表。我必须修复一堆围绕邮政编码和城市的数据完整性问题。我正在尝试使用加拿大邮政编码表和我们的注册人表格中的数据进行大量更新查询。我的查询似乎在我的开发环境中花费了无限的时间。不知道为什么。

Create Temporary Table RegistrantToChange AS (
SELECT 
    intID, vcCity, vcPostalCode
FROM
    tblRegistrantWebsiteSignUps
WHERE
    vcPostalCode NOT LIKE '00%' AND vcPostalCode!=''
        AND (vcCity = '' OR vcCity = 'unspecified')
);


UPDATE RegistrantToChange, tblPostalCodes
SET 
    vcPostalCode = tblPostalCodes.PostalCode
WHERE
vcCity = tblPostalCodes.CityName;

原谅可怕且不一致的命名。我刚刚接手了这个项目,我仍然在重构整个事情。

1 个答案:

答案 0 :(得分:0)

临时表中的vcCity没有编入索引,如果tblPostalCodes.CityName没有编入索引,那么更新中的JOIN有很多工作要做,可能需要一些时间。

我建议首先使用vcCity上的索引创建临时表,然后执行INSERT ... SELECT来填充它。确保索引tblPostalCodes.CityName,然后执行更新。