B+樹
鏈接:
https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html
葉子節點冗餘了非葉子節點,非葉子節點右指針指向的葉子節點大於等於該非葉子節點,左指針指向的節點小於該非葉子節點
- 一個節點可以有多個元素(和二叉樹的區別)
- 葉子結點存了所有的元素(和b樹的區別)
- 葉子節點指針相連(和b樹的區別)(可以進行字段在一個範圍內的條件查詢)
Mysql InnoDB引擎,指針爲雙向連接
頁的概念
- 操作系統頁的大小4KB
- Mysql InnoDB引擎頁的大小16KB
索引
InnoDB默認建立主鍵索引,如果沒有主鍵,就默認使用唯一字段建立索引,如果沒有唯一字段,就默認選擇一個建立索引。
主鍵索引(聚簇索引)
聚簇索引是以主鍵爲索引的,索引和值存放在一起。
聯合索引(非聚簇索引)
聯合索引是多個屬性維持的一個非聚簇索引(數據頁只保留主鍵)
聯合索引只存主鍵,如果sql爲select * ,按照查詢到的主鍵再通過主鍵索引查詢,這一步驟叫做回表。
可參考文章:
https://blog.csdn.net/u013308490/article/details/83001060
ps:
- Mysql具有查詢優化器,如果全表掃描比索引快,不一定使用索引。
- 對字段進行操作的都不走索引(例如select * from table where id+1 = 5)