likes
comments
collection
share

MySQL中,为什么要设置NOT NULL?

作者站长头像
站长
· 阅读数 19

有情怀,有干货,微信搜索【荒古传说】关注这个不一样的程序员。

`operator` varchar(30) NOT NULL DEFAULT '' COMMENT '最后操作人',

平时开发过程中,MySQL 字段的一般都会设置为NOT NULL,你有想过为什么吗???

原因如下:

1、占用空间区别

MySQL中,为什么要设置NOT NULL?

总结:上面看出空值('')的长度是0,是不占用空间的;而的NULL长度是NULL,其实它是占用空间的,占用空间的原因看下面说明:

NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

NULL列需要行中的额外空间来记录它们的值是否为NULL。

2、不利于查询优化

如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列会使索引、索引统计和值比较都更复杂。

当可为NULL的列被索引时,每个索引记录需要一个额外的字节,在MyISAM里面甚至可能导致固定大小的索引(例如只有一个整数列的索引)变成可变大小的索引。

参考资料:


文章持续更新,可以微信搜一搜「 荒古传说 」第一时间阅读。

转载自:https://juejin.cn/post/6883444167041613832
评论
请登录