MySQL索引方法BTREE与HASH的区别

创建mysql索引的时候经常有两种选择:BTREE和HASH,;两种索引区别很大。如下表格:

比较名称HASHBREE备注
顺序无序有序BTREE数据是有序的,而hash是没有顺序的。
效率较低理论上HASH查询效率较BTREE高。
索引排序不支持支持HASH不支持排序,BTREE支持。
部分索引不支持支持HASH不支持部分索引查询因为是无序的,而BTREE可以。
避免全表扫描不支持支持HASH任何时候都无法避免全表扫描,而BTREE可以。

HASH的实现:hash是以key、value的形式存储,是通过hash索引计算出一个唯一的hash的key值,通过该key值进行全表匹配判断(组合索引也一样),查询出value值。当数据量非常大的时候会导致哈希碰撞问题,性能就会比btree慢。

BTREE的实现:btree也称为b+树,主要的实现是通过一个平衡二叉树进行判断范围查询,btree的性能比较稳定,不会出现很大的波动,基于索引的顺序扫描,也可以利用双向指针快速左右移动,效率非常高。

总结:btree适用于大部分的场景,并且也是非常实用,虽然说除了在少量数据(万级)场景下性能不如hash,但其它的特性与性能远超hash;所以在选择索引的时候需要考虑数据量与应用场景。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值