对于我们的客户之一,我们提供了一个系统,用于从用户邮政编码位置检索最近的N个地标。 我们有一个数据库,包含所有可用的邮政编码(650,000+)以及相应的坐标(经度和纬度)以及全国400多个地标。在地图上优化搜索
现在我们使用的是从寻找最近ñ地标
以下过程- 检索选定邮编
- 的纬度和经度通过使用获取所有的地标坐标
- 令他们地理距离公式
- 取最接近的N + 2个地标,并使用以下过程获得与它们的实际距离
- 检查是否坐标之间的距离存储在距离缓存表
- 如果不是去一个地图引擎,检索缓存中的
- 的距离,并将其存储重新排序列表,并返回前N个最接近的地标
问题是我们需要从数据库访问角度和第三方访问都优化这一点。
我们试图缓存所有邮编到距离最近的M个地标的距离,但该表会获得额外的6Gb数据,并且需要大约250天的时间才能填充,因为请求需要约30秒。
我们正在考虑对数据进行分区并将紧密邮编编组在一起,但这会使确切的距离无效。
什么优化解决方案,你看到在这种情况下。 谢谢。
这是具有里程碑意义的aprox的距离很好的优化,但是我们需要确切的道路距离,因此额外的步骤,以第三方供应商是仍然需要。 – Pasman
噢,你可以保持这种优化,只有半径比实际要求的大3倍,但如果要达到7英里以外的点,你需要行驶21英里以上。对于距离计算,你的缓存方法非常好,但是找到距离提供者的距离的30秒看起来非常缓慢...... – Kurru
我想它会成为你的最佳改进 – Kurru