mysql索引

最近学习了关于mysql索引的一些知识,再次做一个总结。首先建立mysql索引的作用是为了更快访问一些数据,mysql索引文件是存储在磁盘上的文件。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

目录

mysql索引的数据结构类型:

1.平衡二叉树:

2.B树:

3.B+树:

4.Hash索引:

mysql存储引擎:

1.InnoDB(聚簇索引)

2.MyIsam(非聚簇索引)

3.联合索引 


mysql索引的数据结构类型:

1.平衡二叉树:

平衡二叉树在数据结构中属于比较好理解的部分,按照键值的大小将索引存储在二叉树合适的位置,具体的存储方法就和平衡二叉树的存储是一样的。需要注意左右子树的高度差,进行二叉树的旋转保证二叉树的平衡。

2.B树:

特性如下图所示

可以看到B树的每个结点内部都要存储一个指向关键字代表的具体数据的指针,因为每个盘块的大小是固定的,这样使得每个结点的度相对应较小,如果每个磁盘只存储对应的主键值或者只存储指向具体数据的指针这样可以解决存储空间。

B树的存储方式很接近二叉树,这样会导致有些数据的查找较慢,比如有些数据的深度较大。采用B+树的方式使得查找更加稳定。

3.B+树:

B+树很好的弥补了B树的一些缺点提高了的查找效率和存储效率。

 

4.Hash索引:

和数据结构中的hash查找类似,通过计算关键字的hash值查找该数据对应的地址,可以理解为通过hash值并对hash值进行相应的处理确定数据的存储位置,如果发生数据冲突,解决的办法为链地址法。

mysql存储引擎:

1.InnoDB(聚簇索引)

InnoDB的一个数据表中,它的索引文件和数据文件是同一个,也就是说,在查询时只要找到了索引就找到了数据文件。在InnoDB中及存储主键索引值,有存储行数据,叫做聚簇索引 。

聚簇索引会将磁盘数据按照一列或者多列的值进行排序,通过是按照主键内一列的值进行排序的。聚簇索引的特点是存储的顺序和索引的顺序一致,一张表中只存在一个聚簇索引。

2.MyIsam(非聚簇索引)

非聚簇索引也就是数据和索引分开存储的

3.联合索引 

最左匹配原则,按照联合索引进行查找的原则是,查找字段的关键字中必须按照索引设定顺序出现才能按照索引进行查找。也就是说查找的关键字序列中出现了某一个关键字,但是该关键字在索引中的前一个关键字并未出现,则不能按照索引查找。

比如我为一个字段设置了ABC三个关键字为联合索引。那么当我的查询条件出现了BC而没有写出A,那么将无法使用的索引的方式进行查询。

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值