美国邮政的Mysql数据类型(邮政编码)

时间:2009-09-29 17:26:40

标签: sql mysql database-design data-modeling zipcode

我正在编写一个特定于美国的网络应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一个美国邮政编码列表,我试图加载到包含

的数据库表
  • 5位数我们的邮政编码
  • 纬度
  • 经度
  • usps分类代码
  • 州代码
  • 城市

邮政编码是主键,因为它是我将要查询的内容。我开始使用中型int 5,但它会截断带有前导零的邮政编码。

我考虑使用char5,但我担心索引char变量的性能损失。

所以我的问题是将邮政编码存储为最佳的mysql数据类型是什么?

注意:我在其他几个与邮政编码相关的问题中都看过它。我只对美国5位数的邮政编码感兴趣。因此,没有必要考虑其他国家的邮政编码格式。

3 个答案:

答案 0 :(得分:24)

char(5)是正确的方法。字符串索引非常快,特别是当它是如此小的数据集时。

你是对的,因为它不是真正的数字数据,你永远不应该使用整数作为邮政编码。

编辑添加: 看看这个有充分的理由,为什么你不使用数字作为非数字重要数据: Is it a good idea to use an integer column for storing US ZIP codes in a database?

答案 1 :(得分:2)

使用你的中等INT(5)ZEROFILL,它应该为你添加前导零。无需在格式问题上影响索引和性能。

答案 2 :(得分:1)

如果他成为Char(6),那么他也可以处理加拿大邮政编码。

当你考虑到最多有10万个5位数的邮政编码,即使你把整个表存放在内存中它占用的空间也很小,也没有理由不这样做。