1分钟技术干货:MySQL表设计字段为什么要定义为NOT NULL?

栏目: IT技术 · 发布时间: 6年前

内容简介:1分钟技术干货:MySQL表设计字段为什么要定义为NOT NULL?

↑↑↑点上方蓝字关注并标⭐IT技术思维

一起培养顶尖技术思维

1分钟技术干货:MySQL表设计字段为什么要定义为NOT NULL?

来源:孤独烟(id:zrj_guduyan



本期问题:字段为什么要定义为NOT NULL?


回答:

(1)索引性能不好

Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要 mysql 内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。                                                                                 —— 出自《高性能mysql第二版》

(2)查询会出现一些不可预料的结果
这里举一个例子,大家就懂了。假设,表结构如下

create table table_2 (
     `id` INT (11NOT NULL,
    name varchar(20NOT NULL
)

表数据是这样的

id

name



1

孤独烟

3

null

5

肥朝

7

null

你执行语句

select count(namefrom table_2;

你会发现结果为2,但是实际上是有四条数据的!类似的查询问题,其实有很多,不一一列举。
记住,因为null列的存在,会出现很多出人意料的结果,从而浪费开发时间去排查Bug。

【下期问题】

谈谈 final、finally、 finalize 有什么不同?

欢迎留言说出你的答案

1分钟技术干货:MySQL表设计字段为什么要定义为NOT NULL?

这期问题,明天解答哟

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Big Java Late Objects

Big Java Late Objects

Horstmann, Cay S. / 2012-2 / 896.00元

The introductory programming course is difficult. Many students fail to succeed or have trouble in the course because they don't understand the material and do not practice programming sufficiently. ......一起来看看 《Big Java Late Objects》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试