什麼是覆蓋索引
MySQL
通過索引查數據時,索引的葉子節點上已經包含要查詢的數據,這樣MySQL
不需要再次查詢表數據,這就是覆蓋索引。換句話說,你要查詢的列是索引,並且沒有非索引的列的查詢。
哪些存儲引擎具有覆蓋索引
MySQL
的InnoDB
引擎只有B-Tree
類型的索引具有覆蓋索引,哈希索引、空間索引和全文索引都沒有覆蓋索引。
覆蓋索引優化案例
-
優化模糊查詢,例如查詢的列是索引且無非索引列的查詢,無論模糊查詢是
%%、xxx%、%xxx
都可以用到索引,你可以用explain
看一下extra
列的結果select * from table_name a,(select id from table_name where name like '%p7%') b where a.id = b.id;
-
優化
limit
分頁select * from table_name a,(select id from table_name where xxx order by id limit n , m) b where a.id = b.id;