Mysql索引底層原理

B+樹

鏈接:
https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

葉子節點冗餘了非葉子節點,非葉子節點右指針指向的葉子節點大於等於該非葉子節點,左指針指向的節點小於該非葉子節點

  1. 一個節點可以有多個元素(和二叉樹的區別)
  2. 葉子結點存了所有的元素(和b樹的區別)
  3. 葉子節點指針相連(和b樹的區別)(可以進行字段在一個範圍內的條件查詢)
    Mysql InnoDB引擎,指針爲雙向連接

頁的概念

  1. 操作系統頁的大小4KB
  2. Mysql InnoDB引擎頁的大小16KB

索引

InnoDB默認建立主鍵索引,如果沒有主鍵,就默認使用唯一字段建立索引,如果沒有唯一字段,就默認選擇一個建立索引。

主鍵索引(聚簇索引)

聚簇索引是以主鍵爲索引的,索引和值存放在一起。
在這裏插入圖片描述

聯合索引(非聚簇索引)

聯合索引是多個屬性維持的一個非聚簇索引(數據頁只保留主鍵)
聯合索引只存主鍵,如果sql爲select * ,按照查詢到的主鍵再通過主鍵索引查詢,這一步驟叫做回表。
在這裏插入圖片描述
可參考文章:
https://blog.csdn.net/u013308490/article/details/83001060

ps:

  1. Mysql具有查詢優化器,如果全表掃描比索引快,不一定使用索引。
  2. 對字段進行操作的都不走索引(例如select * from table where id+1 = 5)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章