再有人问你MySQL索引原理,就把这篇文章甩给他!
2.1、Hash 索引
Hash索引适合精确查找,但是范围查找不适合
2.2、二叉树
1. 二叉树的时间复杂度为 O(n) 1. 一个节点只能有两个子节点。即度不超过2 1. 左子节点 小于 本节点,右子节点 大于 本节点
1. 根节点会随着数据的改变而变更 1. 数据量越多,遍历次数越多,IO次数就越多,就越慢(磁盘的IO由树高决定)
2.4、B树(二三树)
2.5、B+树
在 B+ 树中,所有数据记录节点都是按照键值的大小存放在同一层的叶子节点上,而非叶子结点只存储key的信息,这样可以大大减少每个节点的存储的key的数量,降低B+ 树的高度 B+ 树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针。 B+ 树的层级更少:相较于 B 树 B+ 每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快 B+ 树查询速度更稳定:B+ 所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定; B+ 树天然具备排序功能:B+ 树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。 B+ 树全节点遍历更快:B+ 树遍历整棵树只需要遍历所有的叶子节点即可,,而不需要像 B 树一样需要对每一层进行遍历,这有利于数据库做全表扫描。
聚簇索引是 MySQL 基于主键索引结构创建的
SELECT name FROM student WHERE name='wx'
SELECT * FROM student WHERE name='wx'
欢迎关注微信公众号:互联网全栈架构,收取更多有价值的信息。
评论