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

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

平时开发过程中,MySQL 字段的一般都会设置为NOT NULL,原因如下:

1、空值("") 和 “NULL” 的区别:

  1. 空值是不占用空间的
  2. MySQL中的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就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。

2、不利于查询优化

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

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

参考资料:

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

猜你喜欢

转载自blog.csdn.net/finish_dream/article/details/106177996