谈谈你对覆盖索引的认识?

如果一个索引包含了满足查询语句中字段与条件的数据就叫做覆盖索引。具有以下优点:

  1. 索引通常远小于数据行的大小,只读取索引能大大减少数据访问量。
  2. 一些存储引擎(例如:MyISAM)在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用(通常比较费时)。

  3. 对于 InnoDB 引擎,若辅助索引能够覆盖查询,则无需访问主索引。

发表回复

后才能评论

评论(3)

  • 文峯 2022年4月10日 上午11:27

    覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段

  • mpweixin用户 2022年3月9日 上午11:48

    -索引分为主键索引(叶子结点即完整数据)和辅助索引(叶子结点存储主键值),使用辅助索引查找需要进行回表查询(根据主键值再查找一次)。
    -不需要回表查询的即是覆盖索引,即通过辅助索引就能拿到需要的数据。
    如表student,列有id,name,age,no,辅助索引是name, age
    select * from student(不是覆盖索引)
    select age, no from student(覆盖索引,获取的值都可以从辅助索引中拿到)