关于mysql:MySQL-聚合索引VS非聚簇索引

5次阅读

共计 521 个字符,预计需要花费 2 分钟才能阅读完成。

聚簇索引 是指 索引的构造跟数据记录的物理存储构造统一,也能够说,聚合索引就是数据记录的物理存储构造,innodb 引擎中,聚簇索引就是主键索引。

以表 t 为例,剖析在不同存储引擎下,其索引的构造:

create table t(
    id int primary key auto_increment,
    score int,
    name varchar(255),
    KEY idx_name (name)
);

Innodb 引擎

主键索引(聚簇索引)

主键索引即聚簇索引,叶子节点存储残缺的一条记录,非叶子节点存储索引字段的值。

聚簇索引的问题:记录插入查问依赖主键的程序。
若按主键有序插入,那么主键索引是程序写入,性能较高;
若主键不是有序插入,比方 uuid,则每次插入需查找插入地位(可能还波及页决裂),变成随机写入,性能较差;

非主键索引

非主键索引,也称为二级索引,叶子节点存储主键的 ID,若要查问记录的其它信息,则须要回表到主键索引。

MyISAM 引擎

MyISAM 引擎依照记录的插入程序,保留到磁盘上。

MyISAM 的主键索引和非主键索引均不是聚簇索引,都不同于记录的物理存储构造。

主键索引

主键索引,其叶子节点存储该条记录的地址。

非主键索引

非主键索引,同主键索引相似,叶子节点存储该条记录的地址。

正文完
 0