高性能mysql 聚簇索引_《高性能Mysql》讲聚簇索引

《高性能Mysql》原文聚簇索引如下图为聚簇所有的存储方式,聚簇实际不是一种索引,而是一种数据的存储方式,InnoDB的聚簇事假在同一个结构中保存了B-Tree索引和数据行。当表有聚簇索引时,他的数据行实际存在放叶子页。InnoDb通过主键聚集数据,如果没有定义主键则InnoDB会选择一个唯一的非空索引代替。1.聚簇索引的特性1.1当表存在主键时,Innodb 使用 主键作为聚簇索引1.2当表没有...
摘要由CSDN通过智能技术生成

《高性能Mysql》原文

聚簇索引如下图为聚簇所有的存储方式,聚簇实际不是一种索引,而是一种数据的存储方式,InnoDB的聚簇事假在同一个结构中保存了B-Tree索引和数据行。

当表有聚簇索引时,他的数据行实际存在放叶子页。InnoDb通过主键聚集数据,如果没有定义主键则InnoDB会选择一个唯一的非空索引代替。

1.聚簇索引的特性

1.1当表存在主键时,Innodb 使用 主键作为聚簇索引

1.2当表没有主键时,Innodb 使用第一个唯一约束索引(这个唯一索引必须是不包含null列的)作为聚簇索引

1.3当表没有主键,也没有合适的唯一索引时,Innodb隐含创建一个包含rowid 的聚簇索引

下面展示了聚族索引中的记录是如何存放的。注意到,叶子页包含了行的全部数据,但是节点页只包含了索引列。

aeb316c183f48fe3d202b8bdd7bbc682.png

2. 聚族索引的优点可以把相关数据保存在一起。例如实现电子邮件时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少数的数据页就能获取某个用户的全部邮件。如果没有使用聚族索引,则每封邮件都可能导致一次磁盘I/O;

数据访问更快。聚族索引将索引和数据保存在同一个B-Tree中,因此从聚族索引中获取数据通常比在非聚族索引中查找更快。

使用覆盖索引扫描的查询可以直接使用节点中的主键值。

3 聚族索引的缺点聚簇数据最大限度的提高了I/O密集型应用的性能,但如果数据全部都放在内存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值