MySQL、AUTO_INCRMENT 和 NOT NULL

标签 mysql sql auto-increment notnull

在 MySQL 表中,显然您可以将 INT 设置为 NOT NULL 和 AUTO_INCRMENT,但是虽然它们一起工作,但当您拥有后者时,前者真的有必要吗?

除此之外,删除 NOT NULL 是否有任何性能、内存、存储或速度优势?

最佳答案

作为良好设计的问题,如果列需要一个值才能正常运行,则应将其声明为 NOT NULL。

也就是说,实际上,将自动增量列声明为可为空意味着您可以显式向其传递空值,并且仍然获得为该列生成的值。

http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

就提高效率和空间而言,最好将列设置为 UNSIGNED,因为它永远不会取负值,并使用与表大小保持同步的最小数据类型。

根据定义,所有列约束都会对性能造成一些损失,因为服务器必须投入资源来存储和检查约束。

但是这是微不足道的,特别是对于像检查空值这样的例行程序,而且,如果它强制记录中的有效性,那么这是值得的。

关于MySQL、AUTO_INCRMENT 和 NOT NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770454/

相关文章:

php - 如何使用复选框在 mySQL 中输入 true (1) 或 false (0) 并在 php/html 表单中显示为选中状态?

MySQL if else 在 SELECT 中不起作用

php - 上传多张图片到mysql数据库

java - 如何从仅填充一个的列表框中获取这两个值?

PHP mysql fetch 不返回值

php - MYSQL:带有 LIKE 的子查询

mysql - 根据同一张表获取 3 列左连接

scala - Slick - 将一行插入到与自动递增键链接的两个表中?

java - 我们如何自动递增复合主键的其中一列?

php - MySQL - AUTO_INCRMENT,表的自定义增量开始和值