是否浪费 space 在 IBM Db2 on Cloud 中定义比所需更长的 VARCHAR() 列?

Does it waste space defining a column in IBM Db2 on Cloud a longer VARCHAR() than required?

我们经常有包含不同大小值的列。对于这些,我喜欢将数据类型设置为 VARCHAR,其大小远远超过当前的最大长度。例如,如果我有一个值的当前最小长度为 10 而最大长度为 35 的列,我可能会将数据类型设置为 VARCHAR(64)。我的理由是 Db2 存储 2 字节长度后跟精确值,因此,从存储的角度来看,将数据类型定义为 VARCHAR(64) 而不是 VARCHAR(35) 没有区别。如果出现长度为 36 的值,我不会收到错误消息。

有什么我遗漏的细微差别吗?我不应该对我的 VARCHAR 作业那么油嘴滑舌吗?

CREATE TABLE 的文档中描述了计算行长度的确切公式。 VARCHAR(64) 或 VARCHAR(35) 应该没有区别。

请注意,行存储在表空间的数据页中。出于性能原因,数据库系统通常会预先分配页面。此外,页面可能未完全填满或存在压缩。您可能已经定义了需要自己的页面结构的索引。加上系统目录中有元数据。