欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

MySQL

当前位置: IDC91 > 数据库 > MySQL

浅谈为什么Mysql数据库尽量避免NULL

时间:2022-05-30 13:56:05|栏目:MySQL|点击:

在Mysql中很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。但我们常在一些Mysql性能优化的书或者一些博客中看到观点:在数据列中,尽量不要用NULL 值,使用0,-1或者其他特殊标识替换NULL值,除非真的需要存储NULL值,那到底是为什么?如果替换了会有什么好处?同时又有什么问题呢?那么就看下面:

(1)如果查询中包含可为NULL的列,对Mysql来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂。

(2)含NULL复合索引无效.

(3)可为NULL的列会使用更多的存储空间,在Mysql中也需要特殊处理。

(4)当可为NULL的列被索引时,每个索引记录需要一个额外的字节,在MyISAM里甚至还可能导致固定大小的索引(例如只有一个整数列的索引)变成可变大小的索引。

理由佐证

理由1不需要佐证

首先新建环境, sql语句如下

create table nulltesttable(
id int primary key,
name_not_null varchar(10) not null,
name_null varchar(10)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
alter table nulltesttable add index idx_nulltesttable_name_not_null(name_not_null);
alter table nulltesttable add index idx_nulltesttable_name_null(name_null);

explain select * from nulltesttable where name_not_null='name'; // explain1
explain select * from nulltesttable where name_null='name'; // explain2

上一篇:详解mysql 使用left join添加where条件的问题分析

栏    目:MySQL

下一篇:新手如何安装Mysql(亲测有效)

本文标题:浅谈为什么Mysql数据库尽量避免NULL

本文地址:https://idc91.com/shujuku/3922.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号