B-樹結(jié)構(gòu)
image.png
1.葉子節(jié)點具有相同的高度,葉子節(jié)點的指針為空
2.節(jié)點中的數(shù)據(jù)索引從左到右遞增排列
3.所有節(jié)點都存儲data
B+樹結(jié)構(gòu)
image.png
1.非葉子節(jié)點不存儲數(shù)據(jù)
2.葉子節(jié)點包含所有索引字段
3.葉子節(jié)點之間通過索引連接,提高查詢性能。
Hash表
image.png
1.對索引求hash值就能查到對應(yīng)的buket
2.很多時候查詢效率比tree快,但僅能滿足=,in的查找
3.hash沖突問題
MyISAM存儲引擎
image.png
非聚集索引,索引和文件分離
InnoDB存儲引擎
image.png
1.數(shù)據(jù)本身按B+樹組織的索引結(jié)構(gòu)文件
2.聚集索引葉子節(jié)點包含所有數(shù)據(jù)
3.為什么推薦使用整形的自增Id?你不創(chuàng)建mysql自動幫你創(chuàng)建,增加數(shù)據(jù)庫的壓力,整形可以節(jié)省空間而且自增ID保證主數(shù)據(jù)遞增而且無重復(fù)。其次提高范圍查找效率,增加排序效率,提高掃表能力,順序訪問。如果主鍵是非自增 id,為了確保索引有序,mysql 就需要將每次插入的數(shù)據(jù)都放到合適的位置上。
4.為什么非主鍵索引葉子節(jié)點保存的是主鍵id?不應(yīng)考慮數(shù)據(jù)的一致性,而且可以節(jié)省索引的空間。
聯(lián)合索引

image.png





