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?

这期问题,明天解答哟

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

查看所有标签

猜你喜欢:

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

Linux Device Drivers

Linux Device Drivers

Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman / O'Reilly Media / 2005-2-17 / USD 39.95

Device drivers literally drive everything you're interested in--disks, monitors, keyboards, modems--everything outside the computer chip and memory. And writing device drivers is one of the few areas ......一起来看看 《Linux Device Drivers》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具