15

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

  • 5位美国邮政编码
  • 纬度
  • 经度
  • usps分类代码
  • 州代码
  • 城市

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

我考虑过使用 char5,但我担心索引 char 变量会影响性能。

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

注意:我在其他几个与邮政编码相关的问题中看到了它。我只对美国 5 位数的邮政编码感兴趣。因此无需考虑其他国家的邮政编码格式。

4

3 回答 3

29

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

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

编辑添加:看看这个为什么你不将数字用于非数字重要数据的充分理由: 使用整数列在数据库中存储美国邮政编码是个好主意吗?

于 2009-09-29T17:30:50.010 回答
2

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

于 2009-09-29T17:32:01.630 回答
1

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

当您考虑到最多有 100,000 个 5 位数的邮政编码以及即使您使整个表驻留在内存中所占用的空间有多么小,没有理由不这样做。

于 2009-09-29T17:33:55.527 回答