首页 > 编程知识 正文

mysql什么是索引覆盖,innodb聚簇索引和非聚簇索引

时间:2023-05-04 12:42:40 阅读:60040 作者:813

首先,介绍Mysql常见的两种引擎。 一个是Myisam,另一个是Innodb。

Myisam数据存储区有三种后缀类型的文件。 MYD, MYI, frm。 MYI是Myisam存储的索引文件。 因为. MYD是数据存储文件,所以Myisam数据和索引是分开的。

MYI文件存储树,并通过沿文件搜索进行搜索。 搜索后,叶节点将存储在目标数据在磁盘上的位置,即MYD文件中。 因为Myisam索引是索引,数据是数据,所以基于页码找到相应的数据位置,仅数据和索引分离,即为非集群索引。

InnoDB在每个叶子节点上对应一行数据。 也就是说,将整行的数据和主键一起保存,找到了叶子。 叶子旁边有数据。 不需要像Myisam那样再次返回磁盘查找数据。 Myisam的步骤称为返回操作。

对于Myisam,叶子很轻,但Innodb保存着数据,因此Innodb的叶子很重。

另外,由于Myisam引擎下有多个索引,因此每个索引对应不同的索引文件。但是,Innodb引擎(如ID为索引)在此字段中存储数据,因此Innodb引擎这不是数据。 存储在辅助索引下的是主键ID,而不是当前行数据。 总之,在Myisam中,主索引和次索引都指向物理行,但Innodb主键索引直接存储当前行数据,次索引下存储主键,而主键索引

补充:对Innodb来说

如果没有主键索引,则唯一的索引是主键。

如果没有唯一的索引,则会在系统内部生成rawid作为主键。

Innodb主键的索引结构同时包含主键值和数据,称为集群索引。

聚类索引的优缺点

好处:如果基于主键查询的条目较少,则不需要返回行(数据位于主键节点下)。

如果遇到劣势:不规则的数据插入,则会引起频繁的页面分裂

聚簇索引的主键值必须是尽可能连续增长的值,而不是随机的值。 (请勿使用随机字符串或UUID。 )否则,会发生大量的页面分割和页面移动。

高性能索引策略

innodb的情况下,由于节点下面有数据文件,节点的分割会变慢. innodb的主键尽量使用整数型且使用增量型.不规则的数据时,会发生页面的分割,影响速度.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。