gpt4 book ai didi

mysql - 设计快速查找地址数据库

转载 作者:行者123 更新时间:2023-11-30 01:20:49 26 4
gpt4 key购买 nike

如果我按照以下规范在 MySQL 中设计一个数据库:

1) 超过 2500 万条记录

2) 门牌号、街道、城镇、城市、邮政编码列

3) 街道、城镇、城市和邮政编码需要可全文搜索(在前端,搜索将在 AJAX 上通过文本输入字段运行,并立即显示下拉结果)

我该如何设计以上内容?

我正在考虑使用单个表 - 这是一个坏主意吗?鉴于这是地址数据,不确定是否要跨不同表进行标准化。我还认为,如果使用单个表,我会跨可搜索字段创建全文索引。

我以前没有使用过这么大的数据库。以上是一个坏主意吗?

<小时/>

更新#1:

决定对街道和邮政编码列进行规范化,这是唯一实际被搜索的列(重新检查原始规范)。快速计算了一下,街道名称的基数是总数据集的 2%,邮政编码是总数据集的 6%,所以我认为这是最好的方法。

当前正在运行 2900 万行的导入 - 大约需要 5 小时。为了解决这个问题,稍后会再次更新性能测试。

最佳答案

你的设计听起来很合理。但。您确定数据库中的地址都符合“,,”格式吗? “c/o”地址(“转交/转交”)怎么样?单元/公寓/楼层/套房号?具体的建筑物名称(“巴拉克·奥巴马,白宫,华盛顿特区”)怎么样?

在美国,这种地址布局有多种异常(exception)情况。例如,有一个叫做“Rural Routes”的东西,其格式是“RR BOX”(描述为 here )。有邮政信箱和军事地址。事实上,我刚刚了解到美国邮局有一份出版物描述了各种不同的地址格式 ( here )。

更通用的形式是“地址行 1”、“地址行 2”、“城市”、“邮政编码”。有些服务可以标准化世界大部分地区的地址,甚至还有用于此目的的软件。

您使用全文搜索的想法是个好主意。例如,当查找街道名称的部分匹配时,速度会快得多。

关于mysql - 设计快速查找地址数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com