理解
如果一个索引包含了满足查询语句中字段与条件的数据就叫做覆盖索引。
优点:
- 索引通常远小于数据行的大小,只读取索引能大大减少数据访问量。
- 一些存储引擎(例如:MyISAM)在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用(通常比较费时)。
- 对于 InnoDB 引擎的聚簇索引,若辅助索引能够覆盖查询,则无需访问主索引,避免对主索引的二次查询。
- 对IO密集型的范围查询会比随机从磁盘读取每一行数据的IO要少。(磁盘IO要少)。
覆盖索引无法实现的情况
- 列太多,导致无法覆盖
- 索引列执行了通配符开始的 KILE查询。