聚簇索引(Clustered Index)和非聚簇索引(Non-clustered Index,也叫二级索引 / 辅助索引)是数据库中两种核心索引类型,主要区别如下:
聚簇索引
非聚簇索引
聚簇索引查询
索引 → 直接定位数据行
✅ 一次查找即可拿到完整数据
非聚簇索引查询
索引 → 找到聚簇索引键 → 再查聚簇索引 → 拿到数据
❌ 通常需要“回表”(除非覆盖索引)
聚簇索引
非聚簇索引
-- 主键就是聚簇索引
CREATE TABLE user (
id INT PRIMARY KEY, -- 聚簇索引
name VARCHAR(50),
INDEX idx_name(name) -- 非聚簇索引
);
id:数据按 id 顺序存idx_name:存 name → id,查 name 后再用 id 找数据| 对比项 | 聚簇索引 | 非聚簇索引 |
|---|---|---|
| 数量 | 只能 1 个 | 可多个 |
| 叶子节点 | 数据行 | 索引值 + 主键 |
| 是否回表 | 否 | 通常要 |
| 查询速度 | 快 | 稍慢 |
| 物理顺序 | 决定表顺序 | 不影响 |
聚簇索引决定数据怎么存,非聚簇索引只是“目录”。
如果你愿意,我也可以结合 MySQL / SQL Server / Oracle 或具体业务场景再细讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。