MySQL Integer 0 vs NULL

mon*_*ack 22 mysql sql database performance null

使用整数列时,最好使用0或NULL来表示没有值.例如,如果表具有parent_id字段且特定条目没有父项,则使用0或NULL.我过去总是使用0,这是因为我来自Java世界,其中(1.5之前)整数总是必须有一个值.我主要是关于性能问题,我不太担心哪个是"更正确"的选项.

Hos*_*Aly 27

使用NULL是优选的,原因有两个:

  1. NULL 用于表示该字段没有值,这正是您尝试建模的内容.
  2. 如果您决定在将来添加一些参照完整性约束,则必须使用NULL.


小智 24

如果可能,将列声明为NOT NULL.它通过更好地使用索引并消除测试每个值是否为NULL的开销,使SQL操作更快.您还可以节省一些存储空间,每列一位.如果您确实需要表中的NULL值,请使用它们.只需避免在每列中允许NULL值的默认设置.

MySQL - 优化数据大小


jwe*_*ing 6

使用NULL表示"无值"字面上是正确的.0是整数的值,因此它具有含义.NULL otoh字面意思是什么都没有,所以没有价值.

性能可能是无关紧要的,但如果你学会正确使用NULL代码,那么使用NULL可能会更快一些.


kap*_*apa 5

在您的 parent_id 示例中,0 是完全有效的,因为它代表“root”。在大多数情况下,NULL 是逻辑上“无值”的更好选择。

不过,据我所知,它没有性能影响。