我有一个花店的MySQL表,我正在尝试编写一个搜索功能,它将Zipcode作为输入,并找到所有提供给该邮政编码的花店。 我桌上的每个花店记录都有3个项目
假设我想找到所有送到“02108”的花店。在MySQL中实现此搜索的最佳方法是什么?
我在想
完全匹配搜索 - 但这需要每次搜索都要扫描 整张桌子。低效?
Haversine search + Exact Match - 使用latitutde / longitude值将搜索范围缩小到15英里半径
MySQL Great Circle Distance (Haversine formula) 然后在这些结果中执行完全匹配。
还有别的吗?
非常感谢您的想法和意见。
答案 0 :(得分:1)
正确的方法是将邮政编码列表表示为联结表,每个花店一行,每个邮政编码一行。所以,你的第一个花店可能会有这些行:
FloristId Zip
1 02215
1 02108
1 02109
1 02150
1 02143
1 02144
1 02145
然后,在zip
列上构建索引。然后,您可以使用简单的联接来获得提供特定邮政编码的花店。
您可以使用参考表来查找主要城镇的邮政编码。美国人口普查局有一个从邮政编码制表区到城镇名称的映射。 USPS可能有类似的东西。