【MySQL 笔试面试题11】MySQL中表的字段为什么要定义为NOT NULL?

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

(2)查询会出现一些不可预料的结果

举例:

1> 表结构如下

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

2> 表中测试数据

查询结果为2,但是实际上是有四条数据的。

id

name

1

孤独烟

3

null

5

肥朝

7

null

select count(name) from table_2;