我有两张桌子。第一个具有网站用户输入的City
,State
和Zip
租赁属性。一些城市名称拼写错误。第二个表包含美国邮政服务局在美国几乎所有(但不是全部)Cities
,States
和Zip 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
。