MySQL的两种索引方法如何提高查询速度

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引方法

Mysql的索引方法有两种,BTERR和HASH。
image
散列表(Hash Table)和B+Tree 都是一些常用的数据结构,再数据结构前篇中介绍过一些,关于散列表和树的数据结构,后续也会在《数据结构后篇》中总结一下。

Hash

image
Hash索引如何提高查询速度

Hash索引是将索引键通过Hash运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个Hash表(可以是数组结构)中。
那很显然采用Hash索引,在不考虑Hash冲突的情况下,通过Hash索引的可以一次定位数据,效率要比 BTree高很多。

Hash索引缺陷

Hash函数对索引健运算后,索引无法保证与索引健值大小一致,所以Hash索引有明显缺陷,就是不支持范围查询;无法利用索引的数据来避免sql查询的排序运算;对组合索引而言因为是组合健值进行Hash运算,所以无法使用部分索引让组合索引生效。

Hash索引使用场景

那只需要做等值比较查询,而不包含排序或范围查询的需求,都适合使用哈希索引

B+Tree

B树(B-Tree)属于多叉树又名平衡多路查找树,那B+数属于改进版的B树,
image
image
B树跟B+树的不同点

B+ 树中的节点不存储数据,只是索引,而B树中的节点存储数据
B  树中的叶子节点并不需要链表来串联。

B+Tree如何提高查询速度

B+Tree利用平衡查找树的有序性和高效遍历性,和B+Tree构建的有限高度的多叉树,通过IO次数的降低和查询遍历效率的提高,来提高查询速度。

平衡查找树的特点比较简单,后续也会在《数据结构后篇》中总结一下

已区间查询为例,B+Tree数据结构中只需要定位到区间起点值对应在树中的结点,然后从这个结点开始,按照平衡查找树的遍历方法继续遍历,直到区间终点对应的结点为止,这期间遍历得到的数据就是满足区间值的数据。

类似于我们在《常用数据结构前篇》中提到的跳表的原理。利用局部数据,一层一层靠近查询数据。
image

B+Tree索引使用场景

Mysql数据库中使用最为频繁的索引类型,不仅仅在 MySQL中是如此,实际上在其他的很多数据库管理中BTREE索引也同样是作为最主要的索引类型

扫一扫,关注我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值