以下查询会导致服务器上的负载非常繁重,并且目前每60秒运行一次。它查找表中没有纬度/经度数据的所有行,并根据每个行所代表的源和目标位置,根据城市和州查找纬度/经度。刚刚开始,我认为LTRIM / RTRIM功能可能会减慢速度,如果是这样,那么通过确保数据在途中被清理,这将是一个相当容易的补救措施。但邮政编码/地理数据库是巨大的,甚至是索引,事情都非常缓慢和CPU密集(完全有可能我没有正确创建索引)。任何建议都是受欢迎的 - 即使最好的方法是以某种方式限制每次执行查询的行数,以便稍微分散负载。
UPDATE
T1
SET
T1.coordinatesChecked = 1
, T1.FromLatitude = T2.Latitude
, T1.FromLongitude = T2.Longitude
, T1.ToLatitude = T3.Latitude
, T1.ToLongitude = T3.Longitude
FROM
LoadsAvail AS T1
LEFT JOIN
ZipCodes AS T2 ON LTRIM(RTRIM(T1.FromCity)) = T2.CityName AND LTRIM(RTRIM(T1.FromState)) = T2.ProvinceAbbr
LEFT JOIN
ZipCodes AS T3 ON LTRIM(RTRIM(T1.toCity)) = T3.CityName AND LTRIM(RTRIM(T1.toState)) = T3.ProvinceAbbr
WHERE
T1.coordinatesChecked = 0