覆蓋索引及應用案例

什麼是覆蓋索引

MySQL通過索引查數據時,索引的葉子節點上已經包含要查詢的數據,這樣MySQL不需要再次查詢表數據,這就是覆蓋索引。換句話說,你要查詢的列是索引,並且沒有非索引的列的查詢

哪些存儲引擎具有覆蓋索引

MySQLInnoDB引擎只有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;	
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章