【发布时间】:2015-04-11 16:37:12
【问题描述】:
祝大家今天好,
我在构建以下更新时遇到性能问题:
表 POI(兴趣点)包含 1000 万条记录,其中包含经度和纬度字段(摘自 Planet OSM)
表 City 包含世界上大多数城市的 145,000 条记录,还包含经度和纬度字段
我想将POI表中的外键City_ID(该字段中还没有数据)关联到city表中的主ID。完成后,我将能够将我所有的 POI 与一个城市相关联。我尝试过反向地理编码,但事实证明这是一次糟糕的体验,我不知道如何对 1000 万条记录进行反向地理编码,因此我敢打赌,选择离每个 POI 最近的城市。但似乎我的 SQL 查询在我全新的 16 gigs 或 RAM 的 Macbook Pro 2015 上永远存在。我在这里没有做一些事情......所有经纬度字段都在 MySQL 数据库中编制索引
我已经尝试了以下查询:
update poi
set (poi.city_ID, poi.distance) =
( select city.ID,
MIN(111.045* DEGREES(ACOS(COS(RADIANS(poi.latitude))
* COS(RADIANS(city.latitude))
* COS(RADIANS(poi.longitude) - RADIANS(city.longitude))
+ SIN(RADIANS(poi.latitude))
* SIN(RADIANS(city.latitude))))) AS distance_in_km
FROM city
)
暂停!
干杯
标准。
【问题讨论】:
标签: mysql geolocation geocoding openstreetmap