1、存储空间优化
存储空间:空串是不占用存储空间的,而 NULL 会占用存储空间。
2、查询效率优化
含有空值的列很难进行查询优化,而且对表索引时不会存储 NULL 值的,所以如果索引的字段可以为 NULL,索引的效率会下降很多。因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用 0、一个特殊的值或者一个空串代替空值。
3、联表查询问题
联表查询的时候,例如 LEFT JOIN table2,若没有记录,则查找出的 table2 字段都是 null。假如 table2 有些字段本身可以是 null,那么除非把 table2 中 not null 的字段查出来,否则就难以区分到底是没有关联记录还是其他情况。
4、count(Null column) 问题
如果有 Null column 存在的情况下,count(Null column)需要格外注意,null 值不会参与统计。
5、子查询 NOT IN
NOT IN 子查询在有 NULL 值的情况下返回永远为空结果。
select name from tbNotNull where name not in (select name from tbHaveNull where id!=1)