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?

这期问题,明天解答哟

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

查看所有标签

猜你喜欢:

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

七周七语言

七周七语言

Bruce A.Tate / 巨成、戴玮、白明 / 人民邮电出版社 / 2012-5-8 / 59.00元

内容简介: 从计算机发展史早期的Cobol、Fortran到后来的C、Java,编程语言的家族不断壮大。除了这些广为人知的语言外,还涌现了Erlang、Ruby等后起之秀,它们虽被喻为小众语言,但因其独特性也吸引了为数不少的追随者。 Bruce A. Tate是软件行业的一名老兵,他有一个宏伟目标:用一本书的篇幅切中要害地探索七种不同的语言。本书就是他的成果。书中介绍了Ruby、Io、......一起来看看 《七周七语言》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换