mysql 建立索引字段可以为空吗_MySQL 中NULL和空值的区别,索引列是否可空值或null...

MySQL 中NULL和空值的区别,索引列是否可空值或null

发布时间:2018-07-25 18:02,

浏览次数:298

, 标签:

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 或者 is not null,在sql语句中可以用IFNULL(expr1,expr2)函数,如果想判断空字符用=''或者 <>、!=''来进行处理。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值