面試的技術名詞
面試一般會遇到一些名詞,其實可能自己都知道其中的道理,但是因為沒了解過,當時心里就一句WC,然后弱弱答一句:不好意思這個我只是聽過,具體還沒了解過;
- 回表
- 覆寫索引
- 最左前綴匹配
- 索引下推
1、回表
所謂的回表就是因為普通索引的葉子節點中存盤的不是行資料而是主鍵的值,然后通過主鍵值到主鍵索引樹中的葉子節點獲取具體的值; 
首先表中有5潭訓本資料;

下圖為主鍵索引樹(B+Tree)的簡化模型:

下圖為回表的簡化流程圖:
在普通索引樹中獲取主鍵id的值,然后再到主鍵索引樹中回去主鍵索引對應的行資料,此程序稱之為回表;
2、索引覆寫
所謂的索引覆寫就是:只需要在一棵索引樹上就能獲取SQL所需的所有列資料,無需回表,速度更快,

上圖為age的索引樹 如果你只需要獲取id 和 age 在此樹中已經可以直接獲取, 沒必要進行回表操作;
3、最左前綴匹配
當建立組合索引時,如果按照建立索引的順序如果最左列沒有命中,則組合索引失效;

當content沒有命中索引時,age的索引失效;

4、 索引下推
l 索引下推(index condition pushdown )簡稱ICP,在Mysql5.6的版本上推出,用于優化查詢
l 索引下推在非主鍵索引上的優化,可以有效減少回表的次數,大大提升了查詢的效率,
在employee表中建立組合索引lastName和age


select * from employee where lastName like 'lu%' and age = 67;
Mysql5.6以前:
會忽略age這個欄位,直接通過name進行查詢,在(name,age)這課樹上查找到了兩個結果,id分別為2,6,然后拿著取到的id值一次次的回表查詢,因此這個程序需要回表兩次,
Mysql5.6以及5.6以后版本:
并沒有忽略age這個欄位,而是在索引內部就判斷了age是否等于20,對于不等于20的記錄直接跳過,因此在(name,age)這棵索引樹中只匹配到了id為6一個記錄,此時拿著這個id去主鍵索引樹中回表查詢全部資料,這個程序只需要回表一次,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/178298.html
標籤:Java
