MYSQL笔记-簇

1 简单释义

簇是一种数据的物理存储方式,把具有某种关系的数据行保存在一起,从而提高查询效率

2 聚簇与非聚簇

类型 特点 举例
聚簇索引(Clustered Index) 数据行与主键索引一起存储(索引即数据) 主键索引就是聚簇索引
非聚簇索引(Secondary Index) 索引保存主键的引用,需要回表查询数据 普通的二级索引
CREATE TABLE users (
	id INT PRIMARY KEY,
	name VARCHAR(50),
	email VARCHAR(100)
);

-- 在InnoDB中,id是主键,因此表会按照id的顺序物理排序存储这条数据,这就形成了一个聚簇索引
-- 如果给email添加索引,就会形成一个非聚簇索引,它只包含email+主键id,需要根据id再回表查name

3 簇的性能影响

  • 优点
    1. 提高基于聚簇字段的范围查询、排序的效率
    2. 相关数据被物理的存储在一起,可以减少I/O操作
  • 缺点
    1. 插入、更新代价高、可能导致页分裂(尤其是非递增主键的情况)
    2. 每个表只能有一个聚簇索引

4 个人白话理解

  1. 簇是一种优化数据存储的方式
  2. MySQL的InnoDB引擎默认使用主键聚簇索引,每个表的数据都以主键的顺序存储在磁盘上
  3. 每个表只能有一个聚簇索引,一般是主键,如果没有主键,则会选用唯一非空索引;再没有就自动生成隐藏的row_id
  4. 表的数据行会与主键索引放在一起,形成聚簇结构,因此查询时,聚簇索引可以直接拿到对应数据,而非聚簇索引存储的是索引列值+主键,要回表查询才能拿到完整数据
posted @ 2025-06-02 13:25  Ar4te  阅读(28)  评论(0)    收藏  举报