【发布时间】:2013-08-03 10:31:28
【问题描述】:
在我的数据库中,我目前有浮动数据。所有列都设置为 NULLABLE,当缺少值时,我放在那里NULL。
我的数据库太大,如果我知道,值在 0 - 100 范围内,它们可以四舍五入到小数点后 1 位。所以使用浮点数是开销,我正在考虑使用 smallint (将每个浮点数乘以 10 并将其存储为舍入数字)。现在,NULL 值呢?
我有两个选择:
还是用
NULL-
使用一些“超出范围”的值,例如 9999,来表示
NULL(并且在没有为列设置任何内容时,也将此值设为默认值)。但是,在我的查询中,我需要这样做:SELECT AVG(NULLIF(data, 9999)) AS data, ....(当我使用
NULL时,我可以只使用AVG(data),而NULL的值不会被计算..)
什么更好用。还是有更好的技术?
【问题讨论】:
-
“我的数据库太大”是什么意思。查询减速?磁盘空间要求?
-
@DanielSchneller 磁盘空间要求。随着数据类型的改变,我可以节省一半的空间,也可以做更好的搜索(我可以比较 int,但不能比较 float)
标签: mysql sqldatatypes