首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZipCode到ZipCode存储

ZipCode到ZipCode存储
EN

Database Administration用户
提问于 2018-01-12 14:10:01
回答 1查看 86关注 0票数 1

我正在从事一个项目,该项目要求我允许用户存储/编辑他们称之为“路径”的属性。路径可以是到任何其他邮政编码的任意邮政编码。

他们现在拥有的系统,为默认属性使用一个3位到3位的表,然后如果需要3到3位的例外情况,还有另一个表将5位数到5位数。

代码语言:javascript
复制
123 > 345
12345 > 34567

做出改变对他们来说很有趣,因为找出与3到3属性相关的异常(5到5)就成了一种游戏。再加上一个事实,从zip 12345到zip 98765与反向98765到12345并不相同。

所以,他们宁愿有一个表,它有“每5位数字的邮政编码到每5位数字的邮政编码”的直接细节。根据我的计算,这意味着近20亿行(43000 X 43000 )。因为在美国有那么多有效拉链)。

对我来说,这似乎是个坏主意,但如果不回到他们已经有的情况下,我就看不出有什么办法。

我想把它们作为一个单独的组合存储起来,但是在任何一个方向上都有额外的字段。如下所示:

代码语言:javascript
复制
Zip1: 12345
Zip2: 98765
1to2 Property 1: 
2to1 Property 1:
1to2 Property 2:
2to1 Property 2:
1to2 Property 3:
2to1 Property 3:

这将使行数减少到10亿以下。我只需将Zip1设置为Zip2作为主键,然后为反向Zip2到Zip1建立唯一的索引。

有没有人见过像这样存储数据的巧妙方法或想法?

EN

回答 1

Database Administration用户

发布于 2018-01-12 16:19:18

有意思的。由于从A到B的距离可能不同于B到A,所以我想我应该放弃减少记录的数量,以保持表的细,并消除查询中的列杂耍。将所有邮政编码映射保持为ZipFrom、ZipTo和ZipTo。这样,您就不需要在join中使用任何函数来确定要映射到哪个zip列和要选择哪个距离列,这将有助于索引查找性能。然后可能将表划分为邮政编码的前两位数,以减少查询时搜索的记录?

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/195273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档