在MySQL列上总是有默认值的最佳做法是什么?
这会提高性能吗?
我已将我的列设置为NOT NULL
,但尚未指定默认值。
这是不好的做法?MySQL列应该总是有默认值?
3
A
回答
0
如果您将其指定为NOT NULL,那么您应该有一个默认值,除非您控制输入的数据。 NOT NULL意味着总会有一个值,所以有一个默认值是很好的做法。你所有的列都需要不是NULL吗?
0
不!默认值在您需要时使用,但不会设置不影响性能!
4
在mysql列上总是有默认值的最佳做法是什么?
NO
这要看。
如果你想确保输入合理的数据,那么你应该而不是设置not null
列的默认值。
仅为具有合理默认值的列设置默认值。
如果你能脱身null
只允许null
。
这会提高性能吗?
它减慢插入有点。
但是它可以加快你的选择,因为你不必测试null。
当然,DB花费少量时间来设置默认值。
除非你批量插入,否则你不会注意到任何延迟。
2
性能
插入理论上,应该更快使用,而不是每一个都值发送默认值。事实上,性能差异非常小,您无法衡量它。
一般:使用NOT NULL比使用NULL值工作更快。特别是索引结构如果不需要处理Null值,则工作得更快。
如果使用NOT NULL 使用默认值
最佳实践
在现实世界中,你应该做的,你渴望拥有的一个结果是什么。
- 使用NULL值,如果你想保留的信息:“我不知道真正的价值”
使用默认值,如果你不在乎,如果你知道真正的价值,但你想以确保至少存在默认值。
如果使用NOT NULL,请始终使用DEFAULT。
例子
生日:不要使用NULL为这些用户值,你不知道生日。
isDisabled:请勿使用NULL,而应将默认值设置为0;所以如果没有设置,用户不会被禁用。你决定,所以你不需要NULL。
相关问题
- 1. MySQL函数列默认值
- 2. 在没有默认值的列上使用change_column_default时,应该是“from”值?
- 3. mysql没有默认值
- 4. MySQL的插入总是插入默认
- 5. mysql默认值?
- 6. mysql默认值
- 7. Combobox selecteditem如果默认的“所有”值应该是-1
- 8. 通知onBackpressed应该打开默认的LAUNCHER活动总是
- 9. 老版本的PHP/MYSQL是否有NOT NULL列的默认值?
- 10. getIntExtra总是返回默认值
- 11. dropdownlist插入总是默认值
- 12. getPreferences总是返回默认值
- 13. 弹簧默认属性值总是默认第二
- 14. MySQL检查值不是默认值
- 15. mySQL $ REQUEST默认值
- 16. MySQL BLOB默认值
- 17. 名称空间上的变量是否总是有默认值?
- 18. C#:一个枚举的默认值应该是None还是Unknown?
- 19. 默认列值
- 20. 默认列值
- 21. 滑块总是有默认宽度
- 22. argparse.add_argument()默认总是使用...有时
- 23. 的Web API应该是默认
- 24. 将行恢复为默认列值mysql
- 25. mysql:为插入设置列默认值
- 26. 将列更新为默认值mysql
- 27. 在mysql Id列中设置默认值?
- 28. 推动总是选择枚举列的默认值?
- 29. FormsAuthentication.GetRedirectUrl总是返回默认
- 30. VirtualHost总是去默认conf
这不是普遍适用的。说一个列对于可空或者具有默认值总是有好处是不对的。例如,主键字段将不是NULL,但您当然不会设置默认值。例如,您也不会将用户名字段设为默认值。 – Hammerite
@Hammerite我同意你不想为这些项目设置默认值,但在这种情况下,你将控制前端的验证输入值。如果您的输入验证不为空,那么您不需要默认值。但是如果你没有进行验证并且没有默认值,并且有人试图输入一个空值,那么会发生SQLException,这是不好的做法。真的,你不应该把所有的列设置为NOT NULL,除非它真的有必要。 – Robert