覆盖索引

Posted lanqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了覆盖索引相关的知识,希望对你有一定的参考价值。

1.什么是覆盖索引
即从辅助索引中就可以得到查询的记录,而不需要查询聚集索引中的记录。使用覆盖索引的好吃是辅助索引不饱含整行记录的所有信息,故其大小要远小于聚集索引,因此可以减少大量的IO操作。

2.例子
我们常常说select的时候最好不要 select * ,而要写成select col1,col2....这种形式,但是如果在不使用覆盖索引的情况下, select * 和select col1,col2....的区别不大,select * 只不过多返回了一些字段,增加了一点网络传输上的消耗罢了,其实可以忽略不计。但是如果使用到了覆盖索引,那么他们之间的执行时间差距就大了。select col1 from table; select * from table;如果col1是一个辅助索引,那么mysql只需要查询这个辅助索引就够了,而select * from table除了要查询辅助索引以外,还要再查一次聚集索引,这就就造成了额外的性能开销。数据量大的情况下,这两种查询的执行时间可能会相差十几倍。



以上是关于覆盖索引的主要内容,如果未能解决你的问题,请参考以下文章

mysql覆盖索引和联合索引的区别

「Mysql索引原理(七)」覆盖索引

回表,索引覆盖,最左匹配

mysql-覆盖索引

mysql覆盖索引详解——like模糊全匹配中使用索引

mysql 14 覆盖索引+回表