索引存储:覆盖索引要存储索引列的值。在数据库中,索引通常用于快速定位数据行的位置。当索引包含了查询所需的所有字段数据时,数据库就可以直接从索引中获取所需数据,而无需访问数据表。
减少数据访问:由于覆盖索引包含了查询所需的所有列,因此数据库无需再次访问表的数据,从而减少了磁盘I/O操作。
提高查询效率:覆盖索引减少了数据库需要读取的数据量,从而提高了查询速度。同时,由于索引按值顺序存储,范围查找的I/O操作比随机读取每一行数据的I/O要少得多。
特点
非聚集复合索引的一种形式:覆盖索引通常是非聚集复合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列。
避免回表操作:在InnoDB表中,如果二级索引能覆盖到查询的列,那么就可以避免对主键索引的二次查询,即避免回表操作。
使用B+树索引:MySQL使用B+树索引做覆盖索引,因为哈希索引、全文索引不存储索引列的值。