2011-11-04 60 views

回答

0

如果您将其指定为NOT NULL,那么您应该有一个默认值,除非您控制输入的数据。 NOT NULL意味着总会有一个值,所以有一个默认值是很好的做法。你所有的列都需要不是NULL吗?

+0

这不是普遍适用的。说一个列对于可空或者具有默认值总是有好处是不对的。例如,主键字段将不是NULL,但您当然不会设置默认值。例如,您也不会将用户名字段设为默认值。 – Hammerite

+0

@Hammerite我同意你不想为这些项目设置默认值,但在这种情况下,你将控制前端的验证输入值。如果您的输入验证不为空,那么您不需要默认值。但是如果你没有进行验证并且没有默认值,并且有人试图输入一个空值,那么会发生SQLException,这是不好的做法。真的,你不应该把所有的列设置为NOT NULL,除非它真的有必要。 – Robert

0

不!默认值在您需要时使用,但不会设置不影响性能!

4

在mysql列上总是有默认值的最佳做法是什么?

NO

这要看。
如果你想确保输入合理的数据,那么你应该而不是设置not null列的默认值。
仅为具有合理默认值的列设置默认值。
如果你能脱身null只允许null

这会提高性能吗?

它减慢插入有点
但是它可以加快你的选择,因为你不必测试null。
当然,DB花费少量时间来设置默认值。
除非你批量插入,否则你不会注意到任何延迟。

2

性能

  1. 插入理论上,应该更快使用,而不是每一个都值发送默认值。事实上,性能差异非常小,您无法衡量它。

  2. 一般:使用NOT NULL比使用NULL值工作更快。特别是索引结构如果不需要处理Null值,则工作得更快。

  3. 如果使用NOT NULL 使用默认值

最佳实践

在现实世界中,你应该做的,你渴望拥有的一个结果是什么。

  • 使用NULL值,如果你想保留的信息:“我不知道真正的价值”
  • 使用默认值,如果你不在乎,如果你知道真正的价值,但你想以确保至少存在默认值。

  • 如果使用NOT NULL,请始终使用DEFAULT。

例子

  • 生日:不要使用NULL为这些用户值,你不知道生日。

  • isDisabled:请勿使用NULL,而应将默认值设置为0;所以如果没有设置,用户不会被禁用。你决定,所以你不需要NULL。