面试的时候,面试官总喜欢问一些关于MySQL索引的问题,但是如果单纯的记忆,还是有难度的;今天了不起把MySQL索引的知识点进行汇总,方便大家快速记忆MySQL索引的相关知识点。赶快收藏此文章吧!
索引结构:B+树
索引其实是一种数据结构
注意B+树是MySQL,索引默认的结构;一张表至少有一个索引(主键索引),是可以有多个索引的
MySQL中的B+Tree
- 非叶子节点也叫内部节点,只存储 健值(主键的值) + 指针(存储子节点的地址信息)
- 主键索引:健值(主键的值) + 指针(存储子节点的地址信息)
- 非主键索引:非主键列的值 + 指向下一个节点的指针(存储子节点的地址信息)
- 所有的数据都存在叶子节点中;
- 同时叶子节点上还存有一个指向相邻叶子节点的指针
- 如果是聚簇索引(主键索引),叶子节点存储的是实际数据
- 如果是非聚簇索引,则保存的是聚簇索引的索引key,也就是主键索引的值;查询非聚簇索引会有一个回表操作
- B+Tree的每个叶子节点增加了一个指向相邻叶子节点的指针,它的最后一个数据会指向下一个叶子节点的第一个数据,形成了一个有序链表的结构。
为什么B+ 树比B 树更适合作为索引?
- B+ 树的磁盘读写代价更低 B+ 树的数据都集中在叶子节点,分支节点 只负