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個欄位取出,然後再做表關聯
結論:很明顯使用第二種,減少不必要的數據量