0

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

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;

请原谅可怕和不一致的命名。我最近刚刚接手了这个项目,并且仍在重构整个事情的过程中。

4

1 回答 1

0

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

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

于 2013-08-06T18:25:30.887 回答