MySQL数据库索引---总结

聚集索引(Clustered Index)

定义:聚集索引决定了表中数据的物理存储顺序。

在InnoDB存储引擎中,表的数据实际上就存储在聚集索引的叶子节点上。也就是说,表的行数据直接按聚集索引的顺序进行排序和存储。

特点:

每个表只能有一个聚集索引(因为数据只能以一种顺序物理存储)。

如果没有显式定义主键,InnoDB会选择唯一索引作为聚集索引,如果没有唯一索引,InnoDB会隐式创建一个唯一的ROWID作为聚集索引。

聚集索引对于范围查询(如 SELECT * FROM table WHERE column_name BETWEEN value1 AND value2;)特别高效,因为数据本身就是按照索引顺序存储的。

插入和更新聚集索引列的值时,可能需要移动数据行以维护索引的顺序,这可能会影响性能。

非聚集索引(Non-Clustered Index)

(也称为二级索引)

定义:非聚集索引与聚集索引分开存储,

其叶子节点不直接包含行数据,而是存储对应行的主键值(或其他唯一标识符),用于定位到聚集索引中的实际数据行。

特点:

一个表可以有多个非聚集索引,允许基于不同的列进行快速检索

非聚集索引的查询速度通常比全表扫描快,因为它们减少了需要检查的数据量。

插入、删除和更新操作在非聚集索引上通常比聚集索引更快,因为非聚集索引不直接包含数据,且其结构更灵活。

但是,当你通过非聚集索引查询数据时,数据库通常需要两个步骤:首先通过非聚集索引找到主键值,然后通过聚集索引(或主键)找到实际的数据行,这被称为“索引回表”。

总结

聚集索引决定了表中数据的物理存储顺序,且每个表只能有一个。

非聚集索引与聚集索引分开存储,且一个表可以有多个非聚集索引。

聚集索引的查询性能对于范围查询特别高效,但更新操作可能需要移动数据行。

非聚集索引的查询速度通常较快,但可能需要额外的“索引回表”步骤来获取完整的数据行。

选择合适的索引类型和策略对于优化数据库性能至关重要。

PPT资源

        该内容,已制作PPT-------本人资源中已上传,使用者可自取!!

【免费】MySQL数据库索引-总结资源-CSDN文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值