聚簇索引 辅助索引

在InnoDB存储引擎中,确实使用了B+树结构来组织数据和索引,但是InnoDB采用了一种特殊的方式来结合数据和索引,这种结构被称为聚集索引(Clustered Index)。

在InnoDB中,主键索引就是聚集索引。每张表的数据行实际上都存储在主键索引的叶子节点上。这意味着数据和主键索引是物理上紧密相连的,它们实际上是存储在同一颗B+树上的。当你按照主键查询数据时,你实际上就是在遍历这个B+树。

非主键索引(Secondary Indexes),也被称作辅助索引,它们同样使用B+树结构,但与聚集索引不同,非主键索引的叶子节点不存储完整的行数据,而是存储主键值以及指向实际数据行的指针。当使用非主键索引进行查询时,InnoDB首先会查找非主键索引树,找到对应的主键值,然后再通过这个主键值去聚集索引中获取完整的行数据,这一过程被称为回表(Index Lookup)。

这样的设计有以下优点:
- 减少了磁盘I/O次数,因为主键索引包含了实际的数据。
- 对于范围查询和排序查询,B+树结构可以有效地利用顺序访问的特点,提高查询效率。
- 数据和索引的紧密结合有助于提高数据局部性,优化缓存性能。

然而,这也意味着修改主键(例如增加或者删除列)可能是一个昂贵的操作,因为这将涉及到整个B+树的重构。同时,如果主键不是自然增长的,比如使用UUID作为主键,那么可能导致B+树的碎片化,影响性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值