【问题标题】:Searching by Zip Code proximity - MySql按邮政编码邻近搜索 - MySql
【发布时间】:2010-02-14 06:03:10
【问题描述】:

我在通过邮政编码邻近查询进行搜索时遇到了一些问题。我已经搜索并搜索了谷歌,但我发现的所有内容要么太慢,要么无法工作。问题来了:

我有一个包含所有美国邮政编码(约 70,500 个)的表的数据库,还有一个包含数千家商店(约 10,000 多个)的表,其中包括他们的邮政编码。我需要能够提供邮政编码并返回与该邮政编码最近的商店列表,按距离排序。

任何人都可以为我指出一个他们已经使用并且可以处理这么多负载的好资源,或者分享他们使用过的有效并且相当快的查询吗?将不胜感激。谢谢!

【问题讨论】:

  • 您在下面说“我明白需要做什么以及需要做什么以及不需要做什么。我需要的是一些 SQL 来完成它。” - 要获得最有用的答案,您需要说明您遇到问题的部分。

标签: sql mysql zipcode proximity


【解决方案1】:

您应该构建一个表格,其中包含每个邮政编码以及相关的纬度和经度。当有人输入邮政编码和距离时,您会计算其中的经纬度范围,然后选择该边界框内的所有邮政编码。然后,您选择在该集合中具有邮政编码的任何商店,并计算它们与提供的邮政编码的距离并按其排序。 (使用haversine formula 计算地球上各点之间的距离)

如果您主要关心的是速度,您可能需要预先计算所有距离。有一个表,其中包含一个商店邮政编码列、另一个邮政编码和一个距离列。如果您需要减少行数,您可以将其他邮政编码限制为一定距离内的邮政编码(比如 100 英里,或者你有什么)。如果您不根据距离限制链接,您将拥有超过 7 亿行的表,但您当然可以进行快速查找。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多