Mysql索引原理及查询优化(三)

索引的种类

Hash索引

即把key键值的hash值作为索引,在查找时对key做hash,即可一次定位。这种索引非常快,甚至比b树快,因为它不需要从根节点开始一层一层找。一步到位。

但是hash索引也有很多缺点,比如:

  • 只能满足等值查询,不支持范围查找,显然,hash值并没有大小排序一说
  • 没法进行任何排序操作,因为key值的大小和hash值的大小没关系,这点和第一点有点类似
  • hash索引没法避免全表扫描。其实这个问题也是来自于hash冲突,不同的key值可能会对应相同的hash值,当出现这种情况时,mysql又需要去全表扫描对比实际值。所以当表数据变多,hash冲突变多以后,hash索引的效率也是很低的。

b+树

B+树和二叉树、平衡二叉树一样,都是经典的数据结构。B+树由B树和索引顺序访问方法(ISAM,是不是很熟悉?对,这也是MyISAM引擎最初参考的数据结构)演化而来,但是在实际使用过程中几乎已经没有使用B树的情况了。

B+树的定义十分复杂,因此只简要地介绍B+树:B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接。
在这里插入图片描述

b树与b+树的区别

  • b树的所有节点都存了实际的数据值,而b+树非叶子节点只存索引,实际值都存在叶子节点
  • b+树的层次是固定的,查找每个数据,磁盘的io次数都是一样的(因为树的高度是稳定的);但b树不一定,b树的查找有可能会提前结束。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值