說一說索引的底層實現?
Hash索引
基于哈希表實現,只有精確匹配索引所有列的查詢才有效,對于每一行數據,存儲引擎都會對所有的索引列計算一個哈希碼(hashcode),并且Hash索引將所有的哈希碼存儲在索引中,同時在索引表中保存指向每個數據行的指針。
B-Tree索引(MySQL使用B+Tree)
B-Tree能加快數據的訪問速度,因為存儲引擎不再需要進行全表掃描來獲取數據,數據分布在各個節點之中。
B+Tree索引
是B-Tree的改進版本,同時也是數據庫索引索引所采用的存儲結構。數據都在葉子節點上,并且增加了順序訪問指針,每個葉子節點都指向相鄰的葉子節點的地址。相比B-Tree來說,進行范圍查找時只需要查找兩個節點,進行遍歷即可。而B-Tree需要獲取所有節點,相比之下B+Tree效率更高。
B+tree性質:
n棵子tree的節點包含n個關鍵字,不用來保存數據而是保存數據的索引。
所有的葉子結點中包含了全部關鍵字的信息,及指向含這些關鍵字記錄的指針,且葉子結點本身依關鍵字的大小自小而大順序鏈接。
所有的非終端結點可以看成是索引部分,結點中僅含其子樹中的最大(或最小)關鍵字。
B+ 樹中,數據對象的插入和刪除僅在葉節點上進行。
B+樹有2個頭指針,一個是樹的根節點,一個是最小關鍵碼的葉節點。
-
數據
+關注
關注
8文章
7139瀏覽量
89578 -
存儲
+關注
關注
13文章
4355瀏覽量
86175 -
數據結構
+關注
關注
3文章
573瀏覽量
40232 -
MySQL
+關注
關注
1文章
829瀏覽量
26743 -
索引
+關注
關注
0文章
59瀏覽量
10500
發布評論請先 登錄
相關推薦
labview如何實現間隔索引功能
MySQL數據庫索引的底層是怎么實現的
XML數據分頁索引技術研究
教育網BBS搜索引擎設計與實現
化工搜索引擎索引庫的研究和實現
基于JAVA技術的搜索引擎的研究與實現
![基于JAVA技術的搜<b class='flag-5'>索引</b>擎的研究與<b class='flag-5'>實現</b>](https://file.elecfans.com/web2/M00/49/5A/pYYBAGKhtEiAc92OAAAL5_HrVzE418.jpg)
Redis基本類型和底層實現
![Redis基本類型和<b class='flag-5'>底層</b><b class='flag-5'>實現</b>](https://file1.elecfans.com//web2/M00/A6/F7/wKgZomUMQYSAZ201AAAnvsr_20o086.png)
集群環境下分布式索引的實現
![集群環境下分布式<b class='flag-5'>索引</b>的<b class='flag-5'>實現</b>](https://file.elecfans.com/web2/M00/49/83/poYBAGKhwMCAKpcGAAASRgG-cdM574.jpg)
基于Lucene實現全文搜索引擎MYSearch的構建
![基于Lucene<b class='flag-5'>實現</b>全文搜<b class='flag-5'>索引</b>擎MYSearch的構建](https://file.elecfans.com/web1/M00/9E/47/o4YBAF05BJCAGSbbAABdmZmSl-g545.jpg)
索引是什么意思 優缺點有哪些
redis數據結構的底層實現
Mysql索引是什么東西?索引有哪些特性?索引是如何工作的?
![Mysql<b class='flag-5'>索引</b>是什么東西?<b class='flag-5'>索引</b>有哪些特性?<b class='flag-5'>索引</b>是如何工作的?](https://file1.elecfans.com/web2/M00/B8/C5/wKgZomWH6eqAFMrfAADx8vshyf0063.jpg)
評論