mysql - 在 MySql 中快速搜索邮政编码

标签 mysql search zipcode

我有一个 MySQL 花店表,我正在尝试编写一个搜索函数,它将以邮政编码作为输入,并找到所有提供该邮政编码的花店。 我的表中的每个花店记录有 3 项

  • 地理编码经度(以花店地址为中心)
  • 地理编码纬度(以花店地址为中心)
  • 花店送货的城镇名称和邮政编码的字符串字段 例如- 波士顿(02215、02108、02109)、切尔西(02150)、萨默维尔(02143、02144、02145)

假设我想找到所有向“02108”送货的花店。在 MySQL 中实现此搜索的最佳方法是什么?

我在想

  1. 精确匹配搜索 - 但这需要每次搜索都扫描 整个 table 。效率低下?

  2. 半正矢搜索 + 精确匹配 - 使用纬度/经度值将搜索范围缩小到 15 英里半径

    MySQL Great Circle Distance (Haversine formula) 然后在这些结果中执行精确匹配。

  3. 还有什么吗?

非常感谢您的想法和意见。

最佳答案

正确的方法是将邮政编码列表表示为联结表,每个花店一行,每个邮政编码一行。因此,您的第一家花店可能有这些行:

FloristId   Zip
1           02215
1           02108
1           02109
1           02150
1           02143
1           02144
1           02145

然后,在 zip 列上构建索引。然后,您可以使用简单的联接来获取向特定邮政编码送货的花店。

您可以使用引用表来查找主要城镇的邮政编码。美国人口普查局拥有从邮政编码列表区域到城镇名称的映射。美国邮政局可能有类似的东西。

关于mysql - 在 MySql 中快速搜索邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367970/

相关文章:

javascript - 如何过滤 Angular 垫片碎片

email - 我将如何寻找美国最长的邮寄城市名称?

javascript - 多种格式的 jQuery zip 掩码

PHP-从同一行的主键获取第二列值

PHP、mySQL、Google map 代码打印出 "Array",而不是数据值

algorithm - 根据属性权重查找对象

android - 搜索小部件在发布 apk 中不起作用

windows-phone-7 - Windows Phone 7 中带有地理定位服务的邮政编码

mysql - WAMP 服务器在 WIndows 10 上的安装问题

mysql查询查找不同名称的总和