索引

索引

爲了加速對錶中數據行的檢索而創建的一種分散存儲的數據結構

爲什麼使用索引

1·極大減少存儲引擎掃描數據量
2·可把隨機OI變爲順序IO
3·索引可以幫助我們再進行分組、排序等操作時,避免使用臨時表
加強版B TREE

爲什麼是B+TREE

1·B+樹是B樹的變種,多路絕對平衡查找樹,擁有B樹優勢
2·樹掃庫、表能力更強(B每個節點都有關鍵字,B+只需要掃子節點)
3·樹的磁盤讀取能力更強(枝節點不保證是關鍵字:數據,所以可以索引的關鍵字就更多,讀取能力更強)
4·排序能力強
5·查詢效率更穩定

絕對平衡樹(3分支)
坐閉合
只有數據只在葉子節點

Innodb 以主鍵爲索引來組織數據的存儲(聚集索引:在葉子節點保存所有信息)
數據和索引放一起,一個IBD文件

Myisam 兩個文件MYI,MYD;數據和索引分開存放

列的離散性:離散性越好,選擇性越好(越大選擇性越好)

聯合索引

單列索引
聯合索引

聯合索引原則
1最經常用的優先放左邊(最左匹配原則,
2離散度高原則,
3寬度小優先(最少空間原則

覆蓋索引
覆蓋索引,如果查詢列可通過索引節點中的關鍵字直接返回,則該索引稱之爲覆蓋索引。
覆蓋索引可減少數據庫IO,將隨機IO變爲順序ID,提高查詢性能。
select a,b from user where a=?
a,b可能是一個已建立的索引,這樣可能會命中索引,可提高效率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章