💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 持续学习,不断总结,共同进步,活到老学到老
- 人生的本质是追寻自我的提升,包括思想、能力、意志等等。
- 直面变化,找到背后更基础的东西,更基础的东西是用户的需求。
- 我们的成功是我们的现在和将来决定的。今天和明天已经由昨天决定,你还可以决定后天。
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
Compact 行记录是在 MySQL5.0 中引入的,其设计目标是高效地存储数据。简单来说,一个页中存放的行数据越多,其性能就越高。
Compact 行格式结构
变长字段长度列表 | NULL 标志位 | 记录头信息 | 列 1 数据 | 列 2 数据 | 列数据 xxxx |
---|
Compact 行记录格式的首部是一个非 NULL 变长字段长度列表,并且其是按照列的顺序逆序放置的,其长度为:
- 若列的长度小于 255 字节,用 1 字节表示;
- 若大于 255 个字节,用 2 字节表示。
变长字段的长度最大不可以超过 2 字节,这是因在 MySQL 数据库中,VARCHAR 类型的最大长度限制为 65535。变长字段之后的第二个部分是 NULL 标志位,该位指示了该行数据中是否有 NULL 值,有则用 1 表示。该部分所占的字节应该为 1 字节。接下来的部分是记录头信息(record header),固定占用 5 字节(40 位),每位的含义见表 4-1。
最后的部分就是实际存储每个列的数据。需要要特别注意的是,NULL 不占该部分任何空间,即 NULL 除了占有 NULL 标志位,实际存储不占有任何空间
。另外有一点需要注意的是,每行数据除了用户定义的列外,还有两个隐藏列,事务 ID 列和回滚指针列,分别为 6 字节和 7 字节的大小。若 InnoDB 表没有定义主键,每行还会增加一个 6 字节的 rowid 列。
SQL 中的NULL
值认为是列中最小的值,放在 b+树的最左边.
IS NULL、
IS NOT NULL、
!=不一定不用索引,需要看优化器的优化情况.
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙