数据库中索引类型详解——聚簇索引、非聚簇索引、回表、覆盖索引

数据库中索引类型详解:

聚簇索引、非聚簇索引、回表、覆盖索引

聚簇索引

概念和原理:聚簇索引是将数据存储与索引放在一起,数据行的物理顺序与索引的逻辑顺序一致。换句话说,聚簇索引决定了表中数据的物理存储顺序。

特点:一个表只能有一个聚簇索引且必须要有,通常是主键索引。B+树的叶子结点中有整行的数据。(B+树在MySQL索引和数据结构解释说明-CSDN博客有介绍)

举例说明:假设有一张学生信息表,其中的学号是主键,并且创建了以学号为聚簇索引。那么根据学号的顺序会直接影响数据在磁盘上的存储顺序。在查询时根据聚簇索引一次就可以查出整行数据。

非聚簇索引

概念和原理:非聚簇索引的索引和数据存储是分开的,索引保存了指向实际数据行的指针。

特点:一个表可以有多个非聚簇索引,适用于频繁更新的列或需要覆盖查询的列。

举例说明:在上述的学生信息表中,可能还有一个按照姓名的非聚簇索引,这样在通过姓名进行查询时,首先通过索引找到对应的指针,然后再根据指针找到具体的数据行。也就产生了回表。

回表

概念和原理:当使用非聚簇索引进行查询时,需要通过索引找到指针,再根据指针查找数据行的过程称为回表。

特点:影响查询性能的因素之一,增加了额外的IO操作。

覆盖索引

概念和原理:如果一个查询的字段包含在索引中的所有列,那么这个索引就是覆盖索引,可以避免回表操作。

特点:提高查询性能,减少IO操作,适用于查询需要的字段都包含在索引中的情况。

举例说明:如果在学生信息表中,除了学号的聚簇索引外,还建立了包含学号和姓名的联合索引,那么当查询学号和姓名时,可以直接使用该索引进行查询,而无需回表操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值