覆盖索引

覆盖索引是一种包含了查询所有列的索引。这意味着数据库可以使用索引来直接返回查询结果,而无需访问表中的数据行。

覆盖索引可以提高查询性能,因为它减少了对表中数据行的访问。

聚簇索引

聚簇索引是一种将数据行存储在与索引键相同顺序的索引。这意味着数据行在物理上是连续存储的,这可以提高数据访问性能。

聚簇索引适用于主键或唯一键,因为这些键的值是唯一的,并且数据行可以按顺序存储。

聚簇索引可以提高数据的插入、更新和删除性能,因为数据库只需要更新索引一次,而无需更新数据行本身。

覆盖索引和聚簇索引的区别

特点覆盖索引聚簇索引

索引类型包含了查询所有列的索引将数据行存储在与索引键相同顺序的索引

适用于的键类型任何键主键或唯一键

性能提升提高查询性能提高数据的插入、更新和删除性能

覆盖索引是多字段索引里面包含主键吗

是的,覆盖索引是多字段索引里面包含主键的。

这是因为主键是表的唯一标识列,任何查询都必须使用主键来唯一标识数据行。

本质上是语法糖可以拆分成多个索引

是的,本质上覆盖索引是语法糖,可以拆分成多个索引。

但是,使用覆盖索引可以简化查询语句,提高查询性能。

示例:

假设我们有一个 users 表,其中包含以下字段:

Copy
id |name|email|age
如果我们想查询所有用户的姓名和年龄,可以使用以下查询:
Copy
SELECTname, ageFROMusers;

这个查询可以使用覆盖索引来优化。我们可以创建一个包含 name 和 age 列的覆盖索引。这样,数据库就可以使用索引来直接返回查询结果,而无需访问表中的数据行。