一.索引的本質(zhì)
索引是幫助MySQL高效獲取數(shù)據(jù)的排好序的數(shù)據(jù)結(jié)構(gòu)
二.索引數(shù)據(jù)結(jié)構(gòu)
1.二叉樹
2.紅黑樹
? ??
3.Hash表
??
4.B-Tree
? ? 1.葉節(jié)點具有相同的深度,葉節(jié)點的指針為空
? ? 2.所有索引元素不重復(fù)
? ? 3.節(jié)點中的數(shù)據(jù)索引從左到右遞增排序

B-Tree
5.B+Tree
? ? 1.非葉子節(jié)點不存儲data,可以放更多的索引
? ? 2.葉子節(jié)點包含所有索引字段
? ? 3.葉子節(jié)點用指針連接,提高區(qū)間訪問的性能(體現(xiàn)在做范圍查詢的時候)? ??

B+Tree
三.MyISAM存儲引擎索引實現(xiàn)
? ? ? ? MyISAM索引文件(MYI)和數(shù)據(jù)文件(MYD)是分離的(非聚集)

四.InnoDB索引實現(xiàn)(聚集)
?1.表數(shù)據(jù)文件本身就是按B+Tree組織的一個索引結(jié)構(gòu)文件
?2.聚集索引-葉節(jié)點包含了完整的數(shù)據(jù)記錄(觀察最后的葉子結(jié)點)
?3.為什么InnoDB表必須有主鍵,并且推薦使用整型的自增主鍵?
? ?
4.為什么非主鍵索引結(jié)構(gòu)葉子節(jié)點存儲的是主鍵值?(一致性和節(jié)省存儲空間)
? ??

五.聯(lián)合索引
? ? 底層的數(shù)據(jù)結(jié)構(gòu)長什么樣子??
