MySQL 常用索引结构分析

(1)哈希索引:只有Memory引擎支持,使用场景相对简单。它是使用哈希算法,将键值换成新的哈希值,检索时不需要B+那样从根节点逐级遍历,只需要哈希算法就能找到相应的位置。

      优势:哈希索引适用于等值查询(如=、<、>、in),效率很高,前提是没有大量重复键值,否则会出现哈希冲突。

      劣势:哈希索引不支持范围查询;不适用根据索引列进行排序;不支持部分索引列匹配查询。

(2)B+树索引:用于InnoDB引擎,B+树是多路搜索树(即m叉树),它有两个重要的特性:

      特性一:所以的数据都存储在叶子节点(Leaf Page),非叶子节点(Index Page)不存储真正的数据,所有的数据节点都是按照键值的大小顺序存放在同一层叶子节点上;

     特性二:所有的叶子节点都是通过指针连接的。

     补充:B+树的每个节点大小都是一个页的整数倍,之所以这样,是因为计算机磁盘的存储原理。页是计算机管理存储器的逻辑块,大部分页的大小是4k,主存和磁盘是以页为单位进行交互的,然而为了减少磁盘I/O,磁盘往往不是按需读取的,而是预读,即使我们只需要一个字节,磁盘也会将数据起始位置之后的一页或者几页数据放入内存中;另外,在向节点中新增数据的时候,叶子节点以及非叶子节点如果已满,就会出现拆分页操作,那么就需要I/O操作,这是B+树也提供了类似于平衡二叉树的旋转功能,可以有效减少I/O操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值