MySQL列是否应始终具有默认值?

时间:2011-11-04 13:39:21

标签: mysql ddl

最佳做法是始终在MySQL列上使用默认值吗? 这会改善表现吗? 我已将列设置为NOT NULL,但未指定默认值 这是不好的做法吗?

4 个答案:

答案 0 :(得分:4)

  

最好在mysql列上始终使用默认值吗?

NO

这实际上取决于 如果您想确保输入合理数据,则应not null列设置默认值。
仅为具有合理默认值的列设置默认值 如果您可以null离开,只需允许null

  

这会提高性能吗?

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

答案 1 :(得分:2)

效果

  1. 插入从理论上讲,应该更快才能使用默认值而不是发送所有值。事实上,性能差异很小,你无法衡量它。

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

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

  4. 最佳实践

    在现实世界中,你应该做,你想要的结果。

    • 如果您想保留信息,请使用NULL值"我不知道真正的价值"
    • 使用DEFAULT值,如果您不在乎是否知道真实值,但又想确保至少存在默认值。

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

    <强>实施例

    • 生日:对这些用户使用NULL 值,您不知道生日。

    • isDisabled:不要使用NULL ,而是将default设置为0;因此,如果没有设置任何内容,则不会禁用用户。你决定,所以你不需要NULL。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

没有!当您需要时,可以使用默认值,但不会在性能中设置不影响!