|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > 后端技能提升 > 使用MySQL数据库设计表字段的时候一定要勾选上“不是null”
使用MySQL数据库设计表字段的时候一定要勾选上“不是null”

使用MySQL数据库设计表字段的时候一定要勾选上“不是null”

日期:2023-11-04 浏览量:396 原创作者:湖八爷
今天接手了一个半烂尾的项目,发现这个项目的数据库表设计的一塌糊涂,特别是因为很多字段被设计为null值,而编写程序的人员又忽视了null值的情况,导致了一系列的隐性bug。

其实要避免出现这些隐性的小bug很简单,只需要在设计数据库表的时候把每个字段都勾选为“不是null”即可。



一,字段默认为null不是可以节省空间开支吗?

对于很多初学者,可能会掉入这样一个误区,认为字段默认为null可以节省空间开支。其实这是错误的,因为在MySQL数据库中null值是需要占用空间的


以下这段话是MySQL官方文档的描述:

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

翻译过来就是:对于NULL表,NULL列需要在行中占用额外的空间来记录其值是否为NULL。每个NULL列需要一个额外的位,向上舍入到最近的字节。



二,所有字段都勾选上“不是null”有什么好处?

1:避免掉频繁的is null判断。


2:不使用null可以提高索引效率,比如在树形索引结构中将null也视作一般数据节点。


3:可以避免掉很多隐性bug,比如in、<、<>、!=、not in等负向条件查询在有null值的情况下返回的结果基本都是错的,只能采用is null或is not null进行判断。



最后总结一下:我们平时研发的大多数项目都是中小项目,所以不需要想太多,直接把所有字段都勾选为“不是null”即可。


所有字段都勾选为“不是null”.png