1

只是一个普遍的问题。数据库保留值还是 NULL 更好?

我有一个每天计算的佣金字段,并且基于总金额值条件。下一个日期的佣金计算上一个并与总值相加。佣金也可以是 0.00,但不是负数。保持零值或将它们填充为NULL并在查询中使用'ISNULL(comm,0)'而不是'comm'会更好吗?

性能和数据库容量哪个更好?

UPD:性能刚刚好。我想知道当您每天有数百条用户记录时,存储容量是否有差异?NULL as EMPTY 真的是 EMPTY 还是当 0.00 的存储值小于 NULL 本身时它需要一些字节。

4

4 回答 4

4

如果佣金值为 0,则应保持为 0 ,不为 NULL。为什么要调用ISNULL函数将其再次转换回0?这是错误的,它让未来的程序员将处理你的代码,坐下来思考 2 天为什么要这样设计。

保持简单和干净。使用 0。

来自msdn

NULL 值表示该值未知。NULL 值不同于空值或零值。

于 2012-07-07T13:56:38.907 回答
3

可空列通常使用额外的位来标记空值。记录某物是“空”的事实仍然是必须以某种形式编码的信息。显然,这涉及存储和处理。由于行在页面中的布局方式,存储组件仍然可能并不重要。无论哪种方式,这都不是您最重要的考虑因素。

每次引用该列时都必须编写 ISNULL 检查。这可能会使索引的使用复杂化。你会厌倦打字的。

如果您的意思是零,那么以这种方式存储它;一切都简单得多。保存用于在 DDL 中显式声明“NULL”和“NOT NULL”列定义的击键。

于 2012-07-07T22:22:38.090 回答
2

NULL 真正表示 NULL,0 表示已知值为零。我怀疑性能上有什么不同,但这只是在合适的地方使用正确的变量的一般编程逻辑

于 2012-07-07T14:05:16.717 回答
1

在这里您可以了解 sqlserver 如何存储 NULL

http://weblogs.sqlteam.com/mladenp/archive/2007/09/06/How_does_SQL_Server_really_store_NULL-s.aspx

于 2012-07-08T08:29:43.263 回答