通过邮政编码接近搜索 - MySql

时间:2010-02-14 06:03:10

标签: sql mysql zipcode proximity

我在通过邮政编码邻近查询工作获得搜索时遇到了一些麻烦。我搜索和搜索谷歌,但我发现的一切都太慢或我无法工作。这是问题所在:

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

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

1 个答案:

答案 0 :(得分:4)

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

如果主要考虑速度,您可能需要预先计算所有距离。有一个包含商店邮政编码列,其他邮政编码和距离列的表格。如果您需要减少行数,可以将其他邮政编码限制在一定距离内的邮政编码(比如说100英里,或者你有什么)。如果您不根据距离限制链接,则会有一个包含>的表格。 7亿行,但你当然可以快速查找。