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

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

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

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

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

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

有帮助吗?

解决方案

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

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

编辑添加:查看此内容,了解为什么不使用数字来表示非数字重要数据的充分理由:使用整数列在数据库中存储美国邮政编码是个好主意吗?

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top