Mysql 的索引底层原理及数据结构详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql 的索引底层原理及数据结构详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2120字,纯文字阅读大概需要4分钟。
内容图文
![Mysql 的索引底层原理及数据结构详解](/upload/InfoBanner/zyjiaocheng/865/941c831b1e3d4f3d9155df0d8a32b50a.jpg)
Mysql 的索引底层原理
1.什么是索引?
索引是一种排好序的数据结构,mysql目前默认使用的是b+树。
2.为什么使用b+树?
例如表table 数据
id | name |
1 | zs |
2 | ls |
3 | sa |
4 | zl |
5 | wmz |
6 | zs |
7 | sd |
这这个表里,没有加索引,要查询id= 6的数据,至少要查询6次,才能找到想要的那条数据 select * from table where id = 6;
1) 二叉树
最多只有两个叶子节点,也可以没有叶子节点
为什么不选用二叉树?
根据二叉树的特点,如果是顺序的节点进行排列,则会形成链表的结构,此时查询跟没有使用索引是一样的效果,查询的次数过多,故不推荐使用。
2) 红黑树
这种树结构用的比较多,例如jdk1.8的hashmap中就是这树结构,但是mysql仍然没有采用这种树结构。
平衡二叉树:即左右节点的长度超过2时,会自动旋转达到平衡的状态,旋转次数过多,效率较低。
红黑树特点,节点不是红就是黑,从任一节点到叶子的节点包含的黑色节点数目都是相同的,旋转的次数较少,效率高,但是树的高度较高,因此查询的次数仍然较多。
3)hash
这目前也是mysql官方保存的一种索引结构。
hash索引主要是将该列进行hash计算之后指向一个地址,每次查询的时候,时间复杂度为O(1),查询效率非常高。但是由于生成的hash码是无规则的,所以不能进行排序操作,也不能进行范围查询,所以只适用于确定值的查询。
4)b+树
官方推荐使用索引。
b树:每个节点有多个叶子节点,根节点到每个叶子节点的长度相同,高度为m,叶子节点最多为m-1;且每个中间节点和叶子节点均有数据
b树可以限制树的高度,从而达到查询次数较少目的。但是范围查询仍然需要进行遍历操作,所以对于范围的查询不太适用。
b+树:b+树的数据集中在叶子节点,并且索引是按顺序进行存放的,所以可以很快的进行范围的查询。
3.mysql数据库的引擎
1)myisam
myisam引擎在本地生成三个文件,后缀分别为*.frm,*.MYI,*.MYD, frm文件是创建的表结构,MYI是索引文件,MYD是数据文件
不支持事务操作。
非聚集索引:索引和数据没有绑定在一起
2)innodb
innodb引擎在本地生成两个文件,后缀分别为*.frm,*.ibd, frm 文件是创建的表结构,ibd是文件包含了索引以及数据
支持事务操作。
聚集索引:索引和数据绑定在一起
4.使用自增的整型作为主键索引
使用整型而不是uuid这种类型,因为在遍历比较的时候,整型比字符串类型速度更快
使用自增长,能够更快的生成b+树,性能能够得到提升。
内容总结
以上是互联网集市为您收集整理的Mysql 的索引底层原理及数据结构详解全部内容,希望文章能够帮你解决Mysql 的索引底层原理及数据结构详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。