MySQL null值存储和null性能影响
发表于:2024-12-05 作者:千家信息网编辑
千家信息网最后更新 2024年12月05日,这篇文章主要介绍"MySQL null值存储和null性能影响",在日常操作中,相信很多人在MySQL null值存储和null性能影响问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2024年12月05日MySQL null值存储和null性能影响
这篇文章主要介绍"MySQL null值存储和null性能影响",在日常操作中,相信很多人在MySQL null值存储和null性能影响问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"MySQL null值存储和null性能影响"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
MySQL null值的存储
mysql> create table mytest(t1 varchar(10),t2 varchar(10),t3 varchar(10) ,t4 varchar(10))engine=innodb charset = latin1 row_format=compact;Query OK, 0 rows affected (0.08 sec)mysql> insert into mytest values('a','bb','bb','ccc');Query OK, 1 row affected (0.02 sec)mysql> insert into mytest values('a','ee','ee','fff');Query OK, 1 row affected (0.01 sec)mysql> insert into mytest values('a',NULL,NULL,'fff');Query OK, 1 row affected (0.00 sec)
测试数据准备完之后,执行shell命令:
/usr/local/mysql/test# hexdump -C -v mytest.ibd > /tmp/mytest.txt0000c070 73 75 70 72 65 6d 75 6d 03 02 02 01 00 00 00 10 |supremum........| ----------->一行,16字节0000c080 00 25 00 00 00 03 b9 00 00 00 00 02 49 01 82 00 |.%..........I...|0000c090 00 01 4a 01 10 61 62 62 62 62 63 63 63 03 02 02 |..J..abbbbccc...|0000c0a0 01 00 00 00 18 00 23 00 00 00 03 b9 01 00 00 00 |......#.........|0000c0b0 02 49 02 83 00 00 01 4b 01 10 61 65 65 65 65 66 |.I.....K..aeeeef|0000c0c0 66 66 03 01 06 00 00 20 ff a6 00 00 00 03 b9 02 |ff..... ........|0000c0d0 00 00 00 02 49 03 84 00 00 01 4c 01 10 61 66 66 |....I.....L..aff|0000c0e0 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |f...............|解释:第一行数据:03 02 02 01 /*变长字段*/ ---- 表中4个字段类型为varchar,并且没有NULL数据,而且每个字段君小于255。00 /*NULL标志位,第一行没有null的数据*/00 00 10 00 25 /*记录头信息,固定5个字节*/00 00 00 03 b9 00 /*RowID,固定6个字节,表没有主键*/00 00 00 02 49 01 /*事务ID,固定6个字节*/82 00 00 01 4a 01 10 /*回滚指针,固定7个字节*/61 62 62 62 62 63 63 63 /*列的数据*/第二行数据和第一行数据一样(颜色匹配)。第三行数据(有NULL值)和第一行的解释的颜色对应起来比较差别:03 02 02 01 VS 03 01 ----------当值为NULL时,变长字段列表不会占用存储空间。61 62 62 62 62 63 63 63 VS 61 66 66 66 --------- NULL值没有存储,不占空间结论:当值为NULL时,变长字段列表不会占用存储空间。NULL值没有存储,不占空间,但是需要一个标志位(一行一个)。结论:列数据信息里表明了 NULL数据和''数据都不占用任何空间,对于变长字段列表的信息,和一对比得出:''数据虽然不需要占用任何存储空间,但是在变长字段列表里面还是需要占用一个字节<毕竟还是一个''值>,NULL值不需要占用",只是NULL会有额外的一个标志位,所以能有个优化的说法:"数据库表中能设置NOT NULL的就尽量设置为NOT NULL,除非确实需要NULL值得。"
2. MySQL null性能的影响
(1). B树索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。
(2). 对空值的判断或者滤出处理,在业务上容易出现混乱。
到此,关于"MySQL null值存储和null性能影响"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
数据
存储
字段
一行
字节
空间
性能
影响
学习
信息
标志
索引
更多
结论
颜色
帮助
当值
解释
实用
混乱
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
徐汇区银联网络技术管理方法
软件开发的人事叫什么
幻塔的服务器是红石柱
服务器安全防护狗检测
开放型无线网络安全吗
白漂服务器
HDS管理服务器
网络安全与工业软件
数据库技术难度大
linux命令连接服务器
并发怎么控制数据库更新
以下不是wlan网络安全性
汽车车载网络技术的发展前景
数据库备份错误2
网络安全和信息中心办公室
mysql脚本怎么插到数据库
青岛存储服务器代理哪家好
怎么将json导入数据库
esb部署服务器要求
济南有实力的存储服务器供货商
自己写一个数据库要多长时间
网络技术对于中国文化
我的世界中如何创造服务器
软件开发知识与技术考研方向
网络安全绘画人物海报
36计算机三级数据库技术
云鸟互联网科技有限公司
liunx搭建数据库
远程服务器登录电脑卡住
江西综合软件开发零售价