mysql数据库设计字段不为空
起因,我设计数据库的时候一般情况下默认是不愿意让字段为空的,因为is null这样的话,是不走索引。所以我基本上设置了不为空。
因为设置了不为空,所以sql也要和原来的is null 变成="".之前用的逆向工程的andisnull查询就会失效。
1.创建数据库
2.创建脚本
CREATE TABLE `user` ( `id` bigint NOT NULL, `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`id`), KEY `PK_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
3.给name增加索引
初始化数据
4.脚本测试
EXPLAIN select * from `user` where id=3 and name=""
走索引了,并且数据查询出来了
EXPLAIN select * from `user` where id=3 and name is null
没有走索引,数据还没有查询出来。
结论:大家在设计数据库,字段不为null的时候,一定要记得额使用="",不要使用 is null.
对于身份证这些需要建立唯一索引的字段不能使用空字符串表示,只能设置字段为null。
本文来自博客园,作者:小陈子博客,转载请注明原文链接:https://www.cnblogs.com/cj8357475/p/15970380.html