MySQL中一个字段的数据为空的时候占空间吗?

liyingcuo 像你说的null在中间 在最后 是说的横排的 还是竖排的啊 。。。 像图片上的这种情况呢。。。。

可能占。
数组存储在表中的一行是这种形式
rowid | 列1信息(类型,长度),列1数据 | 列2信息,列2 数据 | …………
当为null的字段在一条记录的最后,就是说他后边没有非null的字段值时,是不占空间的
当为null的字段在一条记录的中间,就是说他后边还有非null的字段值时,他占一个字节
所以oracle建议在设计表结构时尽量把可空的字段放到最后!

补充:
对于数据库中的一条数据,应该算是横排,
rowid | 列1信息(类型,长度),列1数据 | 列2信息,列2 数据 | …………
也就是列1都可能为空,那你就在建表的时候尽量把它放到最后一个字段。
让数据变成这样。。
rowid | 列2信息,列2 数据 | …………| 列1信息(类型,长度),列1数据

对了,我上面列出来的不是你所看到,而是数据在DB中的实际存储的结构。
你看到的,应该是:
列1数据 | 列2 数据 | …………
列2 数据 | …………| 列1数据

总结下:null数据它本身不占空间,但是如果null这个字段在一行数据的中间时,它需要维护没行数据的结构统一 ,需要占用一点空间。

神啊,够详细了吧?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-12
为NULL的时候不占空间,如果是空字符串的话就占。