2012-05-22 29 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表中),你真的需要額外的一點。 –

相關問題