登录
首页 >  数据库 >  MySQL

MySQL -- 聚合索引VS非聚簇索引

来源:SegmentFault

时间:2023-01-24 14:25:36 354浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是数据库学习者,那么本文《MySQL -- 聚合索引VS非聚簇索引》就很适合你!本篇内容主要包括MySQL -- 聚合索引VS非聚簇索引,希望对大家的知识积累有所帮助,助力实战开发!

聚簇索引是指索引的结构跟数据记录的物理存储结构一致,也可以说,聚合索引就是数据记录的物理存储结构,innodb引擎中,聚簇索引就是主键索引。

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

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

Innodb引擎

主键索引(聚簇索引)

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

image.png

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

非主键索引

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

image.png

MyISAM引擎

MyISAM引擎按照记录的插入顺序,保存到磁盘上。

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

主键索引

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

image.png

非主键索引

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

image.png

今天带大家了解了MySQL的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表