内容简介:1分钟技术干货:MySQL表设计字段为什么要定义为NOT NULL?
↑↑↑点上方蓝字关注并星标⭐「IT技术思维」
一起培养顶尖技术思维
来源:孤独烟(id:zrj_guduyan)
本期问题:字段为什么要定义为NOT NULL?
回答:
(1)索引性能不好
Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要 mysql 内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。 —— 出自《高性能mysql第二版》
(2)查询会出现一些不可预料的结果
这里举一个例子,大家就懂了。假设,表结构如下
create table table_2 (
`id` INT (11) NOT NULL,
name varchar(20) NOT NULL
)
表数据是这样的
id
name
1 | 孤独烟 |
3 | null |
5 | 肥朝 |
7 | null |
你执行语句
select count(name) from table_2;
你会发现结果为2,但是实际上是有四条数据的!类似的查询问题,其实有很多,不一一列举。
记住,因为null列的存在,会出现很多出人意料的结果,从而浪费开发时间去排查Bug。
【下期问题】
谈谈 final、finally、 finalize 有什么不同?
欢迎留言说出你的答案
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- springboot~DTO字符字段与日期字段的转换问题
- Protocol Buffers 学习(2):字段类型和其他语言字段类型之间的映射
- Protocol Buffers 学习(2):字段类型和其他语言字段类型之间的映射
- PHPRAP 2.0.2 发布,接口和字段数据分离,字段使用单独数据表
- 如何正确新增字段
- HTTP缓存字段总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!