mysql 建立索引字段可以为空吗_MySQL 中NULL和空值的区别
NULL
在创建表的时候尽量把字段的默认值设置成 not
null,除非你想存储null;因为在mysql中为null的的字段不会走索引,做统计的时候也不会被统计进去,如果想统计进去必须做特定的处
|
MySQL NULL 在创建表的时候尽量把字段的默认值设置成 not null,除非你想存储null;因为在mysql中为null的的字段不会走索引,做统计的时候也不会被统计进去,如果想统计进去必须做特定的处理,这样做比较复杂。可以给字段的值设置成 0、一个特殊的值或者一个空串代替空值。 MySQL难以优化引用了可空列的查询,它会使索引、索引统计和值更加复杂。 可空列需要更多的储存空间,还需要在MySQL内部进行特殊处理。当可空列被索引的时候, 每条记录都需要一个额外的字节,还可能导致 MyISAM 中固定大小的索引(例如一个整数列上的索引)变成可变大小的索引。 创建表 CREATE TABLE `test_null` ( `id` int(11) NOT NULL, `name` varchar(16) DEFAULT '', `name_null` varchar(16) DEFAULT NULL, `name_empty` varchar(16) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; (1)在进行count()统计某列的记录数的时候(null不会统计进来)或者查询不是某个值的时候(null值不会查出来),但是空值是会进行统计到其中的。 做特殊的处理: 大家可以试试统计name_empty默认值给空的字段 (2)MySQL中的NULL其实是占用空间的,空值('')是不占用空间的 (3)判断NULL用IS NULL或者isnotnullmssql 空值,在sql语句中可以用IFNULL(expr1,expr2)函数,如果想判断空字符用=''或者、!=''来进行处理。 (编辑:天瑞地安资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 我可以在本地安装SQL Server Management Stu
- sql – 在sybase Server中提取SP和DDL脚本
- sql-server – 为什么查询导致溢出到tempdb?
- sql – 触发以防止插入两列的重复数据
- sql-server-2008 – 如何使外键约束受信任?
- 指针数据不存储在本地数据库中,解析ios
- entity-framework – 获取Model模式,以使用不支持CreateDat
- 对于teradata数据库,Hibernate @formula不支持将Cast()作为
- sql-server – 服务代理已备份,现在正在接收,但似乎没有处理
- sql – 与在MS Access数据库中加入相关的问题

