繁体   English   中英

NULL或设置默认值

[英]NULL or set a default value

我有一个用于用户问题的表,每个问题都有一个“ question_score”字段。 对于此字段,如果我允许它为NULL,则可能节省一些空间,甚至节省一些CPU时间,对吗?

question_id(int)| quesion_name(varchar)| 问题分数(int)...

您将不会节省任何空间或CPU时间。

即使该值为NULL ,MySQL仍然必须存储这一事实。

有时候,允许NULL值是正确的事情,但是当原因是一些不存在的空间优化时,肯定不是。 默认值通常是可以使用的方法。

如果您不知道输入数据时的值,除非有合理的选择,否则请使用null。 例如,如果您不知道某物的名称,则可能具有默认值“未知”。 但是,如果您不知道结束日期,请不要放入一些您总是要记住进行编码的虚假数据。 而且永远不要输入假冒的数据,而假想的数据可能不是真实值(例如,价格为0),否则您将无法从尚未设置价格的商品中分辨出您赠送的商品。 空值是好的,请在适当的时候使用它们。 在我30年的数据库经验中,解决用空值代替虚假数据(更可能出现无法返回正确结果但不知道的问题)的工作要困难得多。正确处理空值。

简而言之,没有。 这是正确性而非性能的问题。 空值几乎总是导致不一致和错误的结果。 最好的策略是以标准格式设计数据库,不包含空值,除非并且直到您找到令人信服的理由这样做为止。

我认为空值始终是不可行的。 请至少将数据库标准化应用到第三级。 可能您的数据库结构不是最佳的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM