2012-05-22 25 views

回答

0

可以包含NULL值的列通常每行使用一个额外的位来标记它是否为NULL。这可能取决于数据库系统;例如,SQLite对每个值都有数据类型,所以null值与更基本级别的字符串值不同。

对于MySQL,在手册中考虑this

动态大小的行预期行长度用 以下公式计算:

3 
+ (number of columns + 7)/8 
+ (number of char columns) 
+ (packed size of numeric columns) 
+ (length of strings) 
+ (number of NULL columns + 7)/8 
+0

但是,为了存储大多数是char或varchar的字符串,我们在行存储数据库中有一些开销。你在推理中考虑过吗? –

+0

如果它是一个VARCHAR,你可能需要一个或两个字节来告诉这个值的大小。 *除此之外,你需要一点来判断它是否为NULL。你是正确的,应该可以只保存这些列的NULL位并跳过字符串长度字节,但我不知道最常见的方式。对于固定长度的行(就像在一些MyISAM表中),你真的需要额外的一点。 –

相关问题