Mysql 索引(二)—— InnoDB 与 MyISAM 索引方式的比较(聚簇索引 VS 非聚簇索引)

文章介绍了数据库中主键索引的两种类型——聚簇索引和非聚簇索引,分别以MyISAM和InnoDB存储引擎为例进行解释。MyISAM使用非聚簇索引,索引和数据记录分开存储,而InnoDB采用聚簇索引,数据记录与索引保存在一起。并通过创建表的例子展示了这两种索引的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一部分了解到,主键索引的本质其实就是一棵B+树,通过每一层的目录页来找到记录所在的page页。根据 page页是否保存了数据,我们可以将主键索引分为 聚簇索引 和 非聚簇索引

1、MyISAM

(1) 非聚簇索引

非聚簇索引的目录和数据记录是分开存储的。B+树的叶子结点不会存储任何记录,保存的是数据记录的地址。非聚簇索引最大的特点是,将目录Page和数据Page分离。MyISAM引擎采用的就是非聚簇索引。

(2) MyISAM 非聚簇索引验证

我们新创建一个数据表为mytest,使用的存储引擎是MyISAM

create table mytest(
    id int primary key,
    name varchar(11) not null
)engine=MyISAM;        --使用engine=MyISAM

我们先在 /var/lib/mysql 目录下找到建表所在数据库,在该数据库下可以看到 mytest 表的相关文件,我们会发现表的主键索引数据(B+树)和 数据记录 是分开存储的。

2、InnoDB(聚簇索引)

(1) 聚簇索引

聚簇索引的索引目录和数据记录是保存在一起,B+树的叶子结点保存的是数据记录,其他非叶子结点保存的是索引目录。存储引擎InnoDB 采用的就是聚簇索引。

 

(2) InnoDB 聚簇索引验证

我们创建一个 student 表,使用的存储引擎为 InnoDB

create table student(
    id int primary key,
    name varchar(11) not null
)engine=InnoDB;        --使用engine=InnoDB

同样先在 /var/lib/mysql 目录下找到建表所在数据库,在该数据库下可以看到 student 表的相关文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值