数据库进阶学习:索引介绍及Btree,B+tree,hash

内容及图片出自:黑马程序员

介绍:索引时帮助mysql高校获取数据的数据结构,在此之外,数据库还维护者满足特定查找的树结构,这些算法以某种方式音引向数据,这种算法就是索引

优势:提升索引效率,降低数据库io成本,对数据库进行排序,降低排序成本,降低搜索时CPU的损耗

劣势:索引也是需要占用空间的。降低了表的更新效率,如insert,update,delete操作等

几种索引结构:

 Btree:

本质是一个二叉树

二叉树缺点:顺序插入如果形成链表,查询性能大大降低,数据量大的情况下,层级越深,检索速度越慢

 核心:插入后中间大小的数向上分裂,具体要自己去看

B+tree:

 

 核心:所有数据存放在叶子节点,叶节点形成单向链表,非叶节点只起到索引作用

Hash:

特点:

  • hash索引只能用于对等比较(=,in),不支持范围查询(between,>,<)
  • 无法利用索引完成排序操作
  • 查询效率高,效率比b+tree还要高

在mqsql中,支持hash的是memory引擎,而innodb具有自适应hash功能,hash索引是存储引擎根绝b+tree索引在指定的条件下自动构建的

问:为什么innodb存储引擎要使用B+tree引擎呢?

答:二叉树顺序插入形成链表,查询效率低,b+tree相较于二叉树层级更少,搜索效率高。

普通的btree无论是叶子节点还是非叶子节点,都会保存数据,导致一页中存储的键值减少,指针跟着减少,b+tree在相同数据量下高度更低,性能更好,无论如何都在叶节点搜寻,查询稳定,并且叶节点形成的双向链表更利于排序和范围查找。为什么不用hash查询,因为hash不支持范围查询,只支持等于查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值