您的位置:首页技术文章
文章详情页

mysql - 数据库设计( scheme 设计 ), 应该极力避免 NULL 吗?

浏览:36日期:2022-06-12 15:49:15

问题描述

实际现象

了解到:

NULL 语义不清晰

query 时不好优化

如果表示空值, 可以有其他的替代方式( 逻辑上 )

VARCHAR(100) NOT NULL DEFAULT ’’;

INT NOT NULL DEFAULT 0;

预期现象

希望能了解在设计scheme的时候, 对待NULL的态度( 记得有看过一篇文章说过, 应该尽量: NOT NULL DEFAULT XXX)

问题解答

回答1:

是,应该尽可能避免可为NULL的列,且尽可能显示设置默认值,尤其是被索引的列。mysql中,null占空间,如果该值被索引,那么其索引无效。

回答2:

是的,判断字段不为空的时候,还要用 is not null,mysql中的NULL其实是占用空间的,B树索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。