我有两张桌子。第一个具有网站用户输入的CityStateZip租赁属性。一些城市名称拼写错误。第二个表包含美国邮政服务局在美国几乎所有(但不是全部)CitiesStatesZip codes城市。

我正在尝试运行以下SQL语句,以使用美国邮政服务提供的正确名称更新租赁属性表记录。但仅适用于具有特定“ Payment_Plan”的记录。我将在大约15种不同的“ Payment_Plan”类型中重复使用此语句。因此,唯一会改变的是“ Payment_Plan”中给出的值:

UPDATE tblRentals
LEFT JOIN tblZip
  ON tblRentals.List_Zip = tblZip.Zip
  AND tblRentals.Payment_Plan = 'LINX'
SET tblRentals.List_City = tblZip.City;


我使用的是LEFT Join,因为并不是几年前每个邮递区号都在我的US Postal表中。

该SQL语句仅花费15秒即可更新200条记录。我猜这是因为我需要在两个表之间建立某种索引。 tblRentals中有125,000条记录,tblZip中有45,000条记录。

我真的对索引不了解很多,但是创建索引可以加快索引的正确SQL语法是什么?

最佳答案

通过评论发布答案,以便可以关闭此问题:

tblRentals.List_Zip上添加索引。

是的-如果要保留在tblRentals中具有邮政编码但在tblZip中没有匹配项的记录,请使用INNER JOIN而不是LEFT JOIN

07-26 06:05