mysql索引

mysql索引为了解决什么问题

帮助我们更快的解决排好序的数据结构

索引的分类

1.二叉树
2.红黑树
3.b树
4b+树

二叉树
顾名思义,树的每个节点最多有两个子节点,他又可以分为满二叉树和完全二叉树

1.1满二叉树
满二叉树这就是一个满二叉树,所有非子叶节点都存在左右两个子叶,并且所有叶子节点都在同一层级上

1.2完全二叉树
完全二叉树1.保证所有节点的树有同样的深度
2.只需保证最后一个节点前的节点都齐全即可

注意
一般来说,树的右子叶都大于树的根节点,放在右边的分叉,左子叶小于根节点,放在树的左边,如果说你把一串不断递增的数字变成一颗作为二叉树来处理,那么它就和我们另一种数据结构非常相似 单向链表

2.红黑树
红黑树就是我们二叉树的升级版,也叫二叉平衡树,当你单边元素比较多,多到2级,会自动帮你平衡,不要单边增长,也可以叫自旋
如这样一串二叉树
在这里插入图片描述他现在的根节点是1,如果变成红黑树表示的话

当插入两个元素

2个节点当增加第三个节点时
三个节点当增加到三个节点会自动帮助我们平衡,变成这样

4个节点
4节点
5节点6节点所以说我们总结一下
当一边节点数深度超过2的时候,他就会发生旋转,改变他的上一级节点,这样我们查找数据就非常的方便了

这样看红黑比二叉树性能又高一点
6个节点二叉树要查询5次,而红黑树只查询3次就可以了

3.b树
b树叶子节点具有相同的深度,叶节点指针为空
所有索引元素不重复
节点索引从左向右排列

4.b+树
b+树非子叶节点不储存data,只储存索引,可以放更多的索引,
叶子节点包含所有索引字段
叶子节点用指针链接,提高区域访问功能

mysql

数据都储存在data目录下
在这里插入图片描述打开你会发现
其实里面的文件夹都是和你的库名时一一对应的
在这里插入图片描述也就是说你建立的数据库都会保存在我们的data目录下,在我们安装mysql时创建的my.ini文件会有一个存放路径,大家回头可以去看一下

然后打开一个库,你会发现表名都是一个.frm和.ibd文件在这里插入图片描述这里我们使用的时innerdb引擎,所以只会有两张表,.ibd是储存索引和数据,.frm是储存他表的基本结构
我们现在是innerdb引擎

但是如果我们改成的是mysam引擎的话
在这里插入图片描述他会生成三个文件
在这里插入图片描述
和之前一样 .frm存储数据结构
.MYD文件存储数据
.MYI存储索引和字段

mysam使用的是非聚集索引而innerdb使用的是聚集索引,怎么区分就可以理解innerdb数据和索引存放在一起,而mysam将数据与索引分开,通过索引储存的内存地址去寻找数据的内存地址

innerdb表推荐使用主键,最好是整形自增主键
应为innerdb数据都是和主键存放在一起,如果没有主键,他会自动寻找一列没有重复的数据作为主键,如果没有的话他会自动创建一列数据作为主键,为什么要使用整形自增主键,就是为了方便比较,如果是字符串的话,他会先转化asci码,在比较,速度比较慢

像数据库的话99.9的数据库底层都是b+树,另外的是hash码存储数据,如果大量数据hash码查找数据非常得快,比我们b+树要快的多,问什么不用,因为他不能进行范围查找,效率低下,向我们平时很多项目都需要用到范围查找,他不行,所以就没用到了

以上仅个人观点,不对之处希望大家多多指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值