来自 C 背景,我可能对此过于敏感,并且不必要地担心这里的位和字节。

尽管如此,我还是忍不住思考数据是如何实际存储的,如果我选择一个可以轻松分解为 2 的幂的 N,那么数据库在打包数据等方面将更加高效。

使用这种“逻辑”,我在表中有一个字符串字段,它的长度可变,最多 21 个字符。由于上面给出的原因,我很想使用 32 而不是 21 - 但是现在我认为我在浪费磁盘空间,因为将为 11 个额外的字符分配空间,这些字符保证永远不会使用。由于我设想每天存储数万行,这一切都加起来了。

问题:

考虑到以上所有内容,我应该声明 varchar(21) 还是 varchar(32),为什么?

[编辑]

存储的数据符合外部规范,并且长度不能超过 21 个字符。我同时使用 mySQL 和 PostgreSQL,但理想情况下,我希望答案与数据库无关,因为我尽量不受任何特定供应商的束缚。

最佳答案

让数据库实现做优化。使用对应用程序有意义的最小尺寸。

性能一般受需要多少磁盘操作影响最大,数据越小,磁盘操作越少。一些数据库会进行压缩或通用前缀优化,以将使用的磁盘字节数保持在最低限度。

关于sql - 数据库表架构设计 - varchar(n)。 N的合适选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2883098/

10-11 15:48