0

在我的数据库中,我目前有浮动数据。所有列都设置为 NULLABLE ,当缺少值时,我把它放在那里NULL

我的数据库太大,如果我知道,值在 0 - 100 范围内,它们可以四舍五入到小数点后 1 位。所以使用浮点数是开销,我正在考虑使用 smallint (将每个浮点数乘以 10 并将其存储为舍入数字)。现在,NULL价值观呢。我有两个选择:

  1. 还在用NULL

  2. 使用一些“超出范围”的值,例如 9999,来表示NULL(并且当没有为列设置任何内容时,也将此值设为默认值)。但是,在我的查询中,我需要这样做:

    SELECT AVG(NULLIF(data, 9999)) AS data, ....

    (当我使用 时NULL,我可以只使用AVG(data),而NULL没有计算值..)

用什么比较好。还是有更好的技术?

4

4 回答 4

2

NULL如果它已经存在,你为什么要尝试“推出你自己的”功能?正如您所描述的,您对NULLs 的使用是正确且完全有效的。我看不出使用幻数作为人为的 NULL 替代品可以获得任何优势;您只需介绍错误的可能性。

TL;DR:使用NULL

于 2013-08-02T08:28:19.080 回答
1

NULL值与固定字段(float,int ...)上的值占用完全相同的空间。您不能通过不使用 NULL 或其他方式来优化空间使用。对不起 :)

于 2013-08-02T08:23:26.540 回答
1

NULL如果您有实际使用自己的选项,为什么要使用有效数据来表示NULL

我没有看到任何好处

于 2013-08-02T08:24:34.500 回答
0

当您使用NULL意味着您将此列设置为“无”时,在第二种情况下,您为您的列提供一个代表NULL.

所以首先你没有设置你的列,然后你设置了一个显示它的值。NULL这取决于你想要做什么。如果您想在该列上的数据库中做出承诺,请使用第二个,否则如果您只想为空,除非您填写它,否则请使用NULL.

于 2013-08-02T08:29:07.453 回答