MySQL InnoDB 唯一索引多个空值
2021/12/11 2:22:10
本文主要是介绍MySQL InnoDB 唯一索引多个空值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
没注意过这个问题
唯一索引可以允许多个空值,并且你查询空值时还能用上索引??
下面分析下它咋存的
我查看了下这个索引页的数据
把infimum和supremum之间的数据格式化一下,就是索引页的数据
80 00 00 01 主键 1 80 00 00 01 辅助索引列 1 00 00 00 18 00 22 下一列offset 80 00 00 02 主键 2 80 00 00 02 辅助索引列 2 01 00 00 20 00 0a 下一列offset 80 00 00 03 主键3 辅助索引列为NULL 没保存 01 00 00 28 ff da 下一列offset 下面的一样 80 00 00 04 00 00 00 30 00 0e 80 00 00 05 80 00 00 05 00 00 00 38 ff b4 80 00 00 06 80 00 00 06
可以看到,非空值的辅助索引都是(主键、索引)
的形式,但是空值的索引只有主键,就是一个辅助索引项如果只有主键,那么它的索引列就是空的。所以只需要对索引进行一个整个的扫描,找到这些只保存了主键的项目,它们就是索引列为空的。
至于为什么用了索引,扫描索引当然比扫描整个表快了,因为辅助索引肯定比整个表占用更少的磁盘页,所以能够扫描索引得到的数据就不要进行全表扫描。
这篇关于MySQL InnoDB 唯一索引多个空值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南