我在通过邮政编码邻近查询进行搜索时遇到了一些麻烦。我已经搜索并搜索了谷歌,但我发现的所有内容要么太慢,要么无法工作。这是问题:
我有一个包含所有美国邮政编码(约 70,500 个)的表的数据库,还有一个包含数千家商店(约 10,000+)的表,其中包括他们的邮政编码。我需要能够提供邮政编码并返回与该邮政编码最近的商店列表,按距离排序。
任何人都可以为我指出一个他们已经使用并且可以处理这么多负载的好资源,或者分享他们使用过的有效并且相当快的查询吗?将不胜感激。谢谢!
您应该构建一个表,其中每个邮政编码具有关联的纬度和经度。当有人输入邮政编码和距离时,您会计算其中的经纬度范围,然后选择该边界框内的所有邮政编码。然后,您选择在该集合中具有邮政编码的任何商店,并计算它们与提供的邮政编码的距离并按其排序。(使用haversine公式计算地球上各点之间的距离)
如果速度是您主要关心的问题,您可能需要预先计算所有距离。有一个表,其中包含一个商店邮政编码列、另一个邮政编码和一个距离列。如果您需要减少行数,您可以将其他邮政编码限制为一定距离内的邮政编码(比如 100 英里,或者你有什么)。如果您不根据距离限制链接,您将拥有超过 7 亿行的表,但您当然可以进行快速查找。