索引 資料結構

2021-10-04 16:38:42 字數 635 閱讀 3221

子元素比根元素大,放在右邊,反之亦然。

如果資料從1開始遞增,依然使用二叉樹的話,二叉樹就會變成鍊錶結構

本質上是二叉樹,如果某一邊的子元素與另一邊的子元素相比超過二個,會發生自旋,一種平衡方式。也叫二叉平衡樹

在自增資料量很大的時候,樹的層數太高,查詢效率也會變低

葉節點具有相同的深度,葉節點的指標為null

所有索引元素不重複

節點中的資料索引從左到右遞增排列

查詢邏輯

每次磁碟i/o載入乙個節點中的資料到ram記憶體中(mysql設定了乙個節點16kb大小),當找到需要查詢的數字的區間時,通過指標到下一節點繼續查詢

非葉子節點不儲存data,只儲存索引(冗餘),因此可以放更多的索引,並且,冗餘大多是中間值

葉子節點包含所有索引字段,葉子節點用雙向指標連線,提高區間訪問的效能

hash是一種雜湊演算法

每次查詢時,查詢6的資料,會先執行一次hash(6)的雜湊演算法,在對應的hash對映表裡面根據求出的值快速找到對應的指標位址,hash錶比b樹要快一點,但是hash表不支援範圍查詢,因此大部分時候還是使用b+樹,並且在範圍查詢時,由於b+樹葉子節點中用指標連線了,就可以從葉子節點到下乙個葉子節點,不需要又從根節點再去查詢,因此效率要高得多

資料結構索引 InnoDB索引

我們知道,myisam索引檔案和資料檔案是分離的,索引檔案僅僅儲存了資料記錄的位址。在innodb中,資料檔案本身就是索引檔案,表檔案本身就是乙個按照b 樹組織的乙個索引結構,葉節點data儲存了完整的資料記錄,這個索引的key是資料表的主鍵,因此innodb表資料檔案本身就是主索引。上圖是inno...

mysql 資料結構 Mysql索引資料結構

mysql索引資料結構 當慢查詢時,看sql是否走索引。索引的本質 索引是幫助mysql高效獲取資料的排好序的資料結構。mysql若不建立索引,查詢某條資料時則會逐行掃瞄,每掃瞄一行資料就會做一次磁碟io。b tree 葉節點具有相同的深度,葉節點的指標為空。所有索引元素不重複。葉節點中的資料索引從...

MySQL索引資料結構

mysql官方對索引的定義為 索引 index 是幫助mysql高效獲取資料的資料結構。句子主幹就是索引是資料結構。資料庫查詢是資料庫的主要功能,我們都希望查詢資料的速度盡可能快,因此資料庫系統設計會從查詢的優化的角度進行優化。最基本的查詢演算法就是順序查詢,但這種複雜度為o n 查詢在資料量大的時...