MySQL 字段为 NULL 的查询问题
文章目录
假设 MySQL 中某数据表 code 字段是可为 NULL
|
|
是不一样的,第一个查不出 code IS NULL 的数据。
https://stackoverflow.com/questions/3536670/mysql-selecting-rows-where-a-column-is-null
SQL NULL’s special, and you have to do WHERE field IS NULL, as NULL cannot be equal to anything,
including itself (ie: NULL = NULL is always false).
几个不用 NULL 的理由:
1.NULL 和 “” 不相同,比如查询 code != ‘xx’ 的记录并不包含 NULL 的,必须加一个条件 and is null. 容易遗漏。
2.Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。
—— 出自《高性能mysql第二版》
因此建议除了 timestamps 这种字段,都用 NOT NULL DEFAULT ” 表示。
关于 NULL 和唯一索引,唯一性索引是允许多个 NULL 值的存在的。
文章作者 深 呼吸
上次更新 2018-10-30