覆盖索引


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM