将整数存储为数据库中的字符串的缺点
我有一些产品的ID值需要存储。目前这些ID都是整数,但我不确定将来数据提供者是否会在这些ID中加入字母或符号,所以我在考虑现在是把它们存储为整数还是字符串。
把这些值存储为字符串会有什么性能上的问题或者其他缺点吗?
10 个回答
3
这其实要看你说的是什么类型的ID。如果是像电话号码这样的代码,使用varchar(变长字符串)来存储ID会更好,然后你可以在数据库里用一个序列号作为主键。对于那些没有实际数值的整数,通常更推荐使用varchar。
20
不要考虑性能,先考虑意义。
ID“数字”其实并不是数字,只是用数字组成的字符串。
比如我有零件编号12和14,这两个编号有什么区别呢?编号2或者-2有意义吗?没有。
零件编号(以及任何没有单位的东西)并不是“数字”。它们只是数字的组合。
比如美国的邮政编码、电话号码、社保号码。这些都不是数字。在我所在的城市,邮政编码12345和12309之间的区别,不是我家到市中心的距离。
不要把有单位的数字(可以进行加减运算的)和没有单位的数字字符串混淆在一起。
零件ID编号应该被看作字符串,而不是整数。它们永远不会是整数,因为它们没有和、差或平均值。
39
除非你真的需要整数的一些功能,比如进行数学运算,否则把产品ID存成字符串会更好。你根本不需要把两个产品ID加在一起,或者计算一组产品ID的平均值,所以其实用不着用数字类型。
把产品ID存成字符串,性能上不会有太大影响。虽然存储空间会稍微增加一点,但产品ID字符串的大小通常会比你数据库中其他数据的大小小得多。
现在把产品ID存成字符串,将来如果数据提供者开始用字母或符号字符,你就不会遇到麻烦了。这样做没有什么坏处。