MySQL null值存储和null性能影响
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"MySQL null值存储和null性能影响",在日常操作中,相信很多人在MySQL null值存储和null性能影响问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
pvp服务器断电
宝山区正规软件开发品质保障
邮件地址用户名和服务器名
网络安全是哪个专业范围
数据库是数据库系统的
关键的网络安全风险要素
数据库数据维护专业版
we网络安全
安卓软件开发下拉列表
有哪些网络安全的大学
数据库的字段名称可以更改么
钉钉邮箱服务器证书怎么关闭
中望软件开发工程师待遇
网络安全事务部
h2数据库怎么设置
北邮网络安全分数线
山西ssd服务器虚拟主机
应用服务器怎么访问数据库服务器
网络安全证书被删除
怎么联系到软件开发的人
云服务器的ip都是新的吗
游戏国外服务器
php数据库导出命令
网络技术学啥好
江苏服务器续保价格
湖州信息网络技术常见问题
陕西定制软件开发哪家好
最近几年的软件开发新技术
19年春考网络技术操作题库答案
网络隐私与网络安全法