覆蓋索引
乙個索引如果包含了所有查詢字段,就稱為覆蓋索引.
優點1.因為只需要查詢索引,不需要回表,可以極大的提高效能 。
2.索引是順序排列的,對於密集型 i
/o 查詢範圍會小得多。
3.innodb引擎用的是聚簇索引,對於覆蓋索引對於innodb特別有用。 缺點
1.不是所有索引都可以成為覆蓋索引,例如空間索引,全文索引和雜湊索引。
選擇inventory 表先看 結構
這就成功用了覆蓋索引。但如果值覆蓋了where 後面的字段,沒有包括查詢字段,也會進行回表。
explain select * from actor where first_name ='penelope' and last_name like '%mon%'
extra 顯示using where
那麼如何解決
建立乙個多列索引 (actor_id,first_name,last_name)
explain select *from actor join(select actor_id from where fisrt_name ='***' and last_name like '***')
as t1 on (t1.actor_id =actor.actor_id)\g
extra 顯示using index
這種方式叫延遲關聯,這樣就可以使用索引,但並不一定可以的優化;
優化結果看返回行數
在進行基準測試看查詢時間
MySQL 覆蓋索引總結筆記
優化設計總結 1 把選擇性最大的列放在聯合索引的最左邊,為了盡可能的命中索引,多命中一部分就能少全表檢索一部分。但是注意 使用聯合索引時sql語句中各個條件的位置不會影響聯合索引,需要注意的是索引中各個欄位的順序,考慮最左原則。2 範圍查詢in不會打斷索引,包括order by也要看做聯合索引中的乙...
MySQL覆蓋索引呼叫 MySQL 覆蓋索引
什麼是覆蓋索引 建立乙個索引,該索引包含查詢中用到的所有字段,稱為 覆蓋索引 使用覆蓋索引,mysql 只需要通過索引就可以查詢和返回查詢所需要的資料,而不必在使用索引處理資料之後再進行回表操作。覆蓋索引可以一次性完成查詢工作,有效減少io,提高查詢效率。使用示例 查詢語句 select col2,...
MySQL 索引 覆蓋索引
1.什麼是覆蓋索引?概念 查詢語句中所需要的列在索引中,這樣查詢結果在索引的資料結構中查詢即可拿到結果。附加解釋 2.形成覆蓋索引的條件索引分為多種型別,從資料結構上分為 二叉樹 紅黑樹 hash索引 b tree索引,b tree mysql使用的儲存結構 索引的實現可以使用多種資料結構,這裡使用...