5-MySQL InnoDB索引相关

一般数据库的数据(数据本身和结构维护数据)最终都是要落地到磁盘上,进行读取的时候不可能一次性将所有数据全部加载到内存,所以内存中需要不停的置换磁盘上的内容,索引也是一样,一个数据库的索引占据的空间也是不小的数据,都是分页加载的,所以需要合适的数据结构来存储才能保持较好的性能,B树就是用来存储索引数据一种结构。

InnoDB引擎中,表数据是根据主键顺序组织存放的,称为索引组织表(index organized table),每张表都有一个主键,如果创建表时没有显示的定义主键,会按照既定规则选择或创建主键。既定规则如下:首选非空唯一索引(多个的话选最早创建的),没有的话自动创建一个6字节大小的字段。

聚集索引(clustered index)是按照主键构造的一棵B+树,叶子节点存储着数据行,所以InnoDB的表数据实际是跟聚集索引融合的,也即聚集索引包含数据,数据被组织在聚集索引中。

B树这个结构是专为访问外部存储设备而设计的,主要思想就是一次批量读取尽量合适的数据进内存,尽量避免频繁访问外部存储。B树的B一般认为是Balance的意思,但是也没有明确的出处,这个不要花时间纠结。B树形态上的特点是矮胖,B树是m叉多路平衡查找树。

二级索引:非聚簇索引就是二级索引,二级索引会保存着主键ID,通过二级索引的查询需要回表。
回表:通过二级索引查询到ID后,在到聚簇索引下查询真实数据行的动作。
覆盖索引:select的字段被索引字段完全覆盖,此时就不需要回表,可以直接在二级索引上,或是聚簇索引非数据行节点上取到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值