聚簇索引与非聚簇索引(也叫二级索引)

索引

“索引” 是 “存储引擎”用于快速找到记录的一种【数据结构】。

MYSQL中索引在存储引擎层实现,而非服务器层。

索引类型

  • 聚簇索引 & 非聚簇索引(二级索引)
  • 主键索引 & 辅助索引
  • 复合索引
  • 前缀索引
  • 唯一索引
  • 压缩索引
  • 全文索引
  • Hash索引
  • 列索引
    • 普通索引
    • 唯一索引
    • 主键索引
  • 组合索引
  • 全文索引
  • 空间索引

聚簇 & 非聚簇 , 关心的是 “数据” 和 “索引” 之间存储关系。

  • 聚簇索引, 索引与数据放在一起。
  • 非聚簇索引,索引与数据分别存放。
存储引擎索引结构索引类型(数据存放方式)备注
InnoDBB+Tree聚簇索引叶节点存储的是数据
MyisAMB+Tree非聚簇索引叶节点存储的是数据地址
  1. InnoDB 使用聚簇索引,将主键组织到一棵B+树中,而数据储存在叶节点上。
    若使用 “where id = 14” 这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。

  2. MyISM 使用非聚簇索引,非聚簇索引的两棵B+树没什么不同。
    节点的结构完全一致只是存储的内容不同而已。
    主键索引 B+树的节点存储了主键, 辅助键索引B+树存储了辅助键。
    表数据存储在独立的地方。
    这两颗B+树的叶子节点使用同一个表数据地址,对于表数据来说,这两个键没有任何差别。
    由于索引树是独立的,通过辅助键检索无需访问主键的索引树。


`聚集索引`概念:
- 一个表仅有一个聚簇索引 
- 

> `主索引` & `辅助索引`
> `主键索引` & `非主键索引` (不严格的说法)

按索引用途和角色,分`主索引`和`辅助索引`。

- 主索引,一般为主键索引,例如 id 列。
- 辅助索引, 一般为非主键索引,例如 name 列。

```comment
若对Name列进行条件搜索,则需要两个步骤:
- 第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。
- 第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。
-(重点在于通过其他键需要建立辅助索引)

存储引擎

存储引擎支持索引事务备注
InnodbB+Tree(聚簇)支持
MyisAMB+Tree(非聚簇)、全文索引(FULLTEXT)、压缩索引No
MemoryHash索引
NDB集群存储引擎B-Tree 索引

参考

  • https://cloud.tencent.com/developer/article/1541265
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值