mysql索引技術名詞1-5

索引技術名詞

1.回表

注意:
1.如果依靠主鍵查詢,葉子結點直接存儲數據----主鍵B+樹
2.如果依靠其他健查詢查詢,葉子結點存儲主鍵值,再通過主鍵值查詢數據。通過主鍵值查詢數據的過程叫做回表----普通B+樹欄位查找主鍵,再到主鍵B+樹查詢數據

2.覆蓋索引

1:select * from table1 where name='zhangsan'
2:select id from table1 where name='zhangsan'

第一種必須進行回表查詢其他欄位數據
第二種,其他健的B+樹葉子結點已經存儲id值,直接返回,不需要進行回表操作。叫做覆蓋索引

3.最左匹配原則

id,name,age,gender
給(name,age)創建了組合索引

1:select * from table1 where name='zhangsan'
2:select * from table1 where name='zhangsan' and age=10
3:select * from table1 where age=10
4:select * from table1 where age=10 and name='zhangsan'


第1,2,4種用到了組合索引,最左原則。必須先查左邊的name,再查右邊的age
第4中因為mysql架構在優化器的時候內部會重構執行流程

4.索引下推

(name,age)組合索引,最左原則
正常情況下:
1.先根據name列從存儲引擎中把符合規則的數據拉取到mysql的server曾
2.再server層按照age進行數據過濾

索引下推情況下:
1.直接從存儲引擎拉取數據的時候直接按照name和age做判斷,將符合的結果返回給mysql的server層

5.謂詞下推

select t1.name,t2.name from t1 join t2 on t1.id=t2.id

執行方式:
1:把所有的欄位先做表關聯,然後再從關聯好的表中選擇需要的4個欄位
2:先把兩張表需要的4個欄位取出,然後再做表關聯

結論:很明顯使用第二種,減少不必要的數據量