覆盖索引
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除了要查询辅助索引以外,还要再查一次聚集索引,这就就造成了额外的性能开销。数据量大的情况下,这两种查询的执行时间可能会相差十几倍。