MySQL - 存储引擎对索引的组织方式

2021-04-14  本文已影响0人  kyo1992

MyISAM

MySQL数据以文件形式存放在磁盘,对于MyISAM引擎,每张表由三个文件组成。

MyISAM索引文件和数据文件是分离的(非聚集)

如上图,B+树的叶子节点存储的值是磁盘地址,根据磁盘地址到MYD文件去获取数据。

InnoDB

对于InnoDB引擎,每张表由两个文件组成。

InnoDB索引文件和数据文件是聚集的

聚集索引
非聚集索引

对于非聚集索引(索引和数据是分离的),叶节点存储的是索引所在行记录的主键,所以根据非聚集索引查找到主键后,需要回表再查找主键的行记录。 只存储主键值,可以保持一致性和减少存储空间。


联合索引
联合索引底层存储结构

例如有三个字段name,age,position组成联合索引,MySQL会根据字段出现先后顺序依次排序,例如先按name排序,name相同再按age排序,根据这个原理,可以应用最左前缀原则优化。

上一篇 下一篇

猜你喜欢

热点阅读