hash索引和b+tree索引的区别

索引:
索引是对数据可表中一列或者多列的值进行处理后的一种结构,索引可以快速访问数据库表中的特定信息。

采用hash进行缩影的效率非常高,基本上一次检索就可以找到数据,而B+tree需要自顶向下向下依次查找,多次访问节点才能找到数据,中间需要多次I/O操作,理论是哪个来说,hash比b+tree更快。
1、Hash索引图片
在这里插入图片描述
2、B+tree索引图片
在这里插入图片描述
Hash索引和B+tree索引的区别:
在查询速度上,如果等值查询,那么hash索引明显有优势,因为只需要经过一次算法就可以找到相应的键值,复杂度为O(1);当然了,这个前提是键值是唯一的,如果键值不是唯一的就会产生hash冲突,时间复杂的就会变成O(n),降低了Hash索引的查找效率,所以hash通常不会用到重复值列上比如列为性别、年龄、的情况等。
hash是无序的,如果是范围查询检索,hash索引也无法发挥作用。即使原来有顺序的键值也会变得无序;
hash索引无法事项like %**%模糊查询,而b+tree索引具有最左原则,可以实现模糊查询;
hash索引不支持多列联合索引,对于联合索引来说,hash索引在计算hash值得时候是将索引见合并后在一起计算hash值,不会针对每个索引进行单独计算hash值,因此如果鱼蛋几个索引是,联合索引无法被利用;
引文存在hash碰撞问题,在有搭理那个重复值情况下,hash索引的效率极低。b+tree所有的查询都要找到叶子节点,性能稳定。

**场景区分

  1. 大多数情况下,都会有组合查询、排序、分组、模糊查询等查询特征,hash索引无法满足需求
  2. 在离散型高、数量基数大且等值查询时候,hash索引有优势

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值