只是一个普遍的问题。数据库保持值或NULL更好吗?
我有一个佣金字段,每天计算并基于总金额值条件。下一个日期佣金计算前一个日期,并与总值相加。佣金也可以是0.00但不是负数。保持零值或将它们填充为NULL并在查询中使用“ISNULL(comm,0)”而不仅仅是“comm”更好吗?
哪种性能和数据库容量更好?
UPD:表现很好。我想知道如果每天有数百个用户记录存在容量差异吗?当EMPTY为EMPTY时为NULL,或者当存储值0.00小于NULL时,它需要一些字节。
答案 0 :(得分:4)
如果佣金值为0,则应将其保持为0,不为NULL。为什么要调用 ISNULL
函数再次将其转换回0?这是错误的,它使未来的程序员能够处理你的代码,坐下来思考它为什么设计的原因。
保持简洁。使用0。
来自msdn,
值为NULL表示该值未知。值为NULL 不同于空值或零值。
答案 1 :(得分:3)
可空列通常使用额外位来标记空值。记录某事物是“空的”的事实仍然是必须以某种形式编码的信息。显然,这涉及存储和处理。由于在页面中布置行的方式,存储组件仍然可能不重要。无论哪种方式,这都不是您最重要的考虑因素。
每次引用该列时,您将不得不编写ISNULL检查。它可能会使索引的使用复杂化。你会厌倦输入它。
如果你的意思是零,那么就这样存储;一切都简单得多。保存按键以在DDL中明确声明“NULL”和“NOT NULL”列定义。
答案 2 :(得分:2)
NULL实际上表示NULL,0表示已知值为零。我怀疑性能有什么不同,但它只是一个通用的编程逻辑,可以在适当的地方使用正确的变量
答案 3 :(得分:1)
在这里你可以找到sqlserver如何存储NULL
http://weblogs.sqlteam.com/mladenp/archive/2007/09/06/How_does_SQL_Server_really_store_NULL-s.aspx