我有一个用户问题表,每个问题都有一个“question_score”字段。对于这个字段,如果我允许它为NULL,那么这可能会节省一些空间,甚至可能节省一些CPU时间,是吗?
question_id(int)| quesion_name(varchar)| question_score(int)...
答案 0 :(得分:2)
您不会节省任何空间或CPU时间。
即使值为NULL
,MySQL仍然需要存储此事实。
有时候,许可NULL
值是正确的,但肯定不是原因是某些不存在的空间优化。默认值通常是要走的路。
答案 1 :(得分:2)
如果您无法知道输入数据时的值,请使用空值,除非有合理的替代方法。例如,如果您不知道某事物的名称,则可能具有默认值“未知”。但是,如果您不知道结束日期,请不要输入一些您始终需要记住的伪造数据。永远不会放入假的数据而不是可能是真正的价值(例如价格为0),或者你将无法告诉你从那些尚未定价的物品中提供的物品。空的很好,在适当的时候使用它们。在我30年的数据库经验中,使用伪数据代替空值(并且更有可能出现无法返回正确结果但却不知道的问题)要比它更难解决正确处理空值。
答案 2 :(得分:1)
简而言之,没有。这是一个正确的问题,而不是表现。空缺几乎总是导致不一致和不正确的结果。最好的策略是以正常形式设计数据库而不使用空值,除非并且直到找到令人信服的理由不这样做。
答案 3 :(得分:0)
在我看来,空值总是不行。请将database normalization至少应用于第三级。可能你的数据库结构不是最优的。