在MySQL表格中,显然你可以将INT设置为NOT NULL和AUTO_INCREMENT,但是当它们一起工作时,前者真的有必要吗?
除此之外,是否有删除NOT NULL的性能,内存,存储或速度加值?
答案 0 :(得分:2)
作为一个好的设计问题,如果列需要一个值才能正常运行,那么它应该被声明为NOT NULL。
这就是说,实际上,将自动增量列声明为可空意味着您可以显式地向其传递空值,并且仍然可以为该列生成值。
http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
在提高效率和空间方面,最好使列UNSIGNED,因为它永远不会取负值,并使用与表格保持同步的最小数据类型大小
根据定义,所有列约束都会对性能造成一些损失,因为服务器必须将资源用于存储和检查约束。
但这是微不足道的,尤其是对于检查空值等常规事件而言,如果它在您的记录中强制执行有效,则值得花费。