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除了要查詢輔助索引以外,還要再查一次聚集索引,這就就造成了額外的性能開銷。數據量大的情況下,這兩種查詢的執行時間可能會相差十幾倍。