设计快速查找地址数据库

时间:2013-09-01 15:31:20

标签: mysql

如果我要在MySQL中设计一个符合以下规范的数据库:

1)超过25万条记录

2)门牌号,街道,城镇,城市,邮政编码的栏目

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

我将如何设计上述内容?

我正在考虑使用单个表 - 这是个坏主意吗?我不确定是否要在不同的表中进行规范化,因为这是地址数据。我也在想,如果使用单个表,我会在可搜索的字段中执行FULLTEXT索引。

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


更新#1:

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

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

1 个答案:

答案 0 :(得分:0)

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

在美国,此地址布局有各种例外情况。例如,有一种称为“乡村路线”的东西,其格式为“RR BOX”(描述为here)。有邮政信箱和军事地址。事实上,我刚刚得知美国邮政局有一份出版物描述了各种不同的地址格式(here)。

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

您使用全文搜索的想法是个好主意。例如,在寻找街道名称的部分匹配时,它会更快。