将整数存储为数据库中的字符串的缺点

22 投票
10 回答
12813 浏览
提问于 2025-04-15 12:43

我有一些产品的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存成字符串,将来如果数据提供者开始用字母或符号字符,你就不会遇到麻烦了。这样做没有什么坏处。

撰写回答