mysql索引结构


前言

当数据库中数据量较大时,使用索引可以很大程度上加快检索数据的速度,同时索引主要是在引擎层,不同引擎所支持的索引也各不相同。


一、索引结构

1.B+tree:最常见的索引,大部分引擎均支持(mysql默认)
2.hash索引:hash表实现,不支持范围查询,只支持精确比对
3.R-Tree空间索引:MyISAM的特殊索引,使用较少
4.full-text:匹配文档的方式,建立倒排索引

二、不同引擎对索引的支持

在这里插入图片描述
(默认为B+树索引)

三、B+树索引

B+树中所有元素均会出现在最底层,而在非叶结点不存储数据,这样加大了非叶结点存储关键字的数量,与b-Tree相比,减小了树的高度,从而加快检索速度。在这里插入图片描述
B+树中一个节点占用一页(16k),因此同等大小下,中间节点不存储数据可增多关键字数量,形成双向列表,便于查找。

四、hash索引

计算出每一行的hash值,将建立索引的字段的hash所有值通过hash函数映射到hash表上,发生冲突时根据链表解决冲突。在这里插入图片描述
hash(memory支持,innoDB可自动转换)索引的特点:
1.只支持精确的数值比较,不支持范围查询。
2.无法用索引完成排序
3.不发生冲突时只需要一次比较就可以,性能较优。

五、B+树较其他索引的优势

1.相对于二叉树

相对于二叉树,相同数据的情况下,二叉树较高,而树的查询跟树的高度相关,因此二叉树检索速度会相对较慢

2.相对于B-Tree

相对于b-tree(详见b+tree部分),b-tree中间节点出存放数据,导致树高会大于B+树

2.相对于hash

3.相对于hash存储,hash只支持等值匹配,不支持范围匹配。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值