以下是我对所有人的问题
我已经有一个现有系统可以执行“Near By Zipcodes”搜索。
这篇文章的目的是看我是否可以优化这个过程。
目前,我有大约43k的邮政编码记录。
我当前算法的工作方式是选择1条记录并对43k记录进行全表扫描。
有没有办法只取一个子集(纬度范围,长距离)并以这种方式进行计算?
答案 0 :(得分:0)
你可以从google或geocoder.us(或者你获得地理数据的地方)获得所有邮政编码的质心的纬度/经度。在where子句中使用它们作为缩小搜索范围的粗略指南。
答案 1 :(得分:0)
我通常做的是将我的搜索加上和减去一度。如上所述,纬度约为69英里。随着经度,事情会变得复杂一些。越靠近北极,距离从一个经度到另一个经度的距离就越短。例如,在佛罗里达州/佐治亚州边境,一度经度相距约55英里,但在加利福尼亚州/俄勒冈州边境,它只相隔约50英里。
首先需要为您的起始位置设置纬度/经度,并且可能需要设置4个变量,例如:beglat,endlat,beglong和endlong。将beglat分配给起始位置的纬度减去一度,将终点分配到起始位置的纬度加一度等。对于更紧密的搜索半径,您可以选择半度或其他。