聚簇索引

聚簇索引

本文为学习mysql时的笔记,主要涉及到聚簇索引相关的知识,后续会逐步补充。

1、面试题

1.为什么MySQL索引使用b+树?

作为对比,b+树和b树,平衡二叉树,红黑树有什么区别。
首先我们先说明一下为什么要使用b类树,而不是二叉树。
b类树由于是多叉树,每一层存储的数据更多,同样数据的数据,层级比二叉树要少,我们知道,同级数据的大小比较,消耗的是CPU的计算,而确定大小后查找下一层的数据,是需要读取磁盘的,而磁盘读取的速度比较慢,所以减少磁盘读取的次数才是提高效率最有效的方法,而减少树的层级会减少磁盘读取的次数,所以我们使用b类树好于二叉树。
然后我们说一下b树和b+树。
先说一下b树和b+树的区别,二者的结构类似,区别在于b+树只有在叶子节点才会存储数据,而b树所有节点都会存储数据。
从这点区别,可以推测出b+树作为索引的优势:
1.b+树的非叶子节点中不存储具体的数据,所以每个节点的大小会比b树小,每次IO读取就可以读更多的节点,相同的结构,b+树整体的IO次数就会比较少,效率比较高。
2.由于b+树的数据只存在在叶子节点,且根节点到所有叶子节点的距离相同,所以b+树作为索引时,查询效率会更加稳定。
3.扫描全表时,b+树只需要扫描所有的叶子节点,而b树需要扫描整个树,b树的效率会更慢。

2.什么是聚簇索引

具体定义一下,就是讲具体的数据存放在b+树的叶子节点中,这种数据存放方式称为聚簇索引。
InnoDB引擎
MySQL中InnoDB,主键索引使用的是聚簇索引,辅助索引使用的是非聚簇索引,其叶子节点中存放的是主键索引。索引当我们使用非主键索引查询数据时,首先会去辅助索引中查询主键,再拿主键去主键索引中查询数据。
myISAM引擎
myISAM引擎使用的是非聚簇索引,在叶子节点中存放的不是数据,而是指向数据的地址,myISAM中也不分主键索引和辅助索引,二者都是直接查询到数据地址,不需要项innoDB一样查询两次索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值