什么是覆盖索引?

覆盖索引(Covering Index)是指一个查询语句的执行只用从索引中就能获取到足够的信息,不需要再去实际的数据行中检索。比如一个表中有100列,我们要查询某个字段的总和或者平均值,如果这个字段已经被索引了,那么查询时就只需要读取索引,而不需要访问表,这样就大大提升了查询性能。

例如,假设有一个用户表 USER,主键为 USER_ID,以 EMAIL 和 USERNAME 为索引。当你执行如下查询语句时:

SELECT EMAIL, USERNAME FROM USER WHERE EMAIL='test@example.com'

查询只需要读索引,因为索引已经包含了所有查询所需信息,即 EMAIL 和 USERNAME。查询不需要查询实际的数据行,使其成为“覆盖索引”。这样做可以大大提高查询效率,因为索引项大小一般远小于实际的行数据。

发表评论

后才能评论