本文介绍: 在页的内部建立分组(包括最大最小记录,但不包括被删除了的记录)。按照从小到大顺序排列,每组的最大记录的头信息file_header存储着本组记录的数量(见粉红色字段)。页目录存储的是最后一条记录地址偏移量(槽、slot,相当于页目录有个指针指向每个组的最后一条记录)。那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高增删效率,但是查询效率低。其实B+树的每个节点都是一页,只不过非叶子节点的数据指针二级索引就是建立的索引叶子节点存放的是主键值

innoDB是按照页为单位读写
在这里插入图片描述
那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高增删的效率,但是查询效率低。所以实际上对页中的行数据进行了优化,能以二分方式进行查询执行这一操作机制叫做页目录,在页的内部建立分组(包括最大和最小记录,但不包括被删除了的记录)。按照从小到大顺序排列,每组的最大的记录的头信息file_header)存储着本组记录的数量(见粉红色字段)。页目录存储的是最后一条记录的地址偏移量(槽、slot,相当于页目录有个指针指向每个组的最后一条记录)。所以二分就能根据每个slot最大值判定当前查询应该去哪个分组
在这里插入图片描述
然后我们抽象到更高层次,页如何被查询的?其实B+树的每个节点都是一页,只不过非叶子节点的数据指针。叶子节点才是真的数据
在这里插入图片描述
然后索引分为聚簇索引二级索引
聚簇索引一般是主键索引,如果没有主键就选不包含NULL值得唯一列,如果还没有MySQL会创建一个隐藏自增id列当作聚簇索引。聚簇索引叶子节点存的是真实数据
二级索引就是建立的索引,叶子节点存放的是主键值,也就是说用了二级索引,查到后,还要用查到的主键值再查一遍聚簇索引才能获取数据结果这个过程叫做回表。但假如你要查的就是主键,那就只查一次即可

原文地址:https://blog.csdn.net/pige666/article/details/134546611

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34436.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注