作为一个来自C语言背景的人,我可能太过于关注比特和字节,对数据的实际存储方式有些担忧。
尽管如此,我仍然无法避免地考虑到数据是如何存储的,如果我选择一个易于分解为2的幂次方的N,数据库将更有效地打包数据等等。
基于这个“逻辑”,我在一个表中有一个字符串字段,其长度可变,最长为21个字符。出于上述原因,我想使用32而不是21。然而,现在我认为我正在浪费磁盘空间,因为会为11个保证永远不会使用的额外字符分配空间。由于我预计每天要存储数万行数据,所有这些都会累加。
问题:
在考虑到以上所有因素的情况下,我应该声明varchar(21)还是varchar(32),为什么?
[编辑]
存储的数据符合外部规范,并且绝不会超过21个字符。我同时使用MySQL和PostgreSQL,但理想情况下,我希望答案与数据库无关,因为我试图不被任何特定的供应商所束缚。