在存储空间方面哪些更有效?
nullable int
列。int
列。我知道一个可空的列占用了1位额外的信息来存储它的空状态,但是做空值会保存数据库,为一个null的int分配32位吗?
(null语义和null的含义对于这个问题并不重要)
答案 0 :(得分:14)
对于像nullable这样的固定宽度字段,无论值是否为null,所需的存储空间总是相同的。
对于可变宽度可空字段,值'NULL'占用零字节的存储空间(忽略该值以存储该值是否为null)。
答案 1 :(得分:4)
如果您使用的是SQL Server 2008,并希望列中包含大量NULL值,我建议您investigate Sparse Columns。它们针对存储NULL值进行了优化。
答案 2 :(得分:3)
SQL Server 2008为主要为NULL的列引入了Sparse columns。
行的SPARSE列(NULL)使用0位存储。但如果有值,你需要支付4字节的罚款。
答案 3 :(得分:3)
0不为空。如果您没有该字段的值,请不要在其中粘贴零!我不能告诉你有多少次我遇到了基本上无法修复的错误,因为我们无法知道生产数据库中的零是真零还是假零。拥抱空值 - 是的,它们需要更多编码,但无论如何都要拥抱它们。