我正在编写一个特定于美国的网络应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一个美国邮政编码列表,我试图加载到包含
的数据库表邮政编码是主键,因为它是我将要查询的内容。我开始使用中型int 5,但它会截断带有前导零的邮政编码。
我考虑使用char5,但我担心索引char变量的性能损失。
所以我的问题是将邮政编码存储为最佳的mysql数据类型是什么?
注意:我在其他几个与邮政编码相关的问题中都看过它。我只对美国5位数的邮政编码感兴趣。因此,没有必要考虑其他国家的邮政编码格式。
答案 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位数的邮政编码,即使你把整个表存放在内存中它占用的空间也很小,也没有理由不这样做。