說一說索引的底層實現(xiàn)?
Hash索引
基于哈希表實現(xiàn),只有精確匹配索引所有列的查詢才有效,對于每一行數(shù)據(jù),存儲引擎都會對所有的索引列計算一個哈希碼(hashcode),并且Hash索引將所有的哈希碼存儲在索引中,同時在索引表中保存指向每個數(shù)據(jù)行的指針。
B-Tree索引(MySQL使用B+Tree)
B-Tree能加快數(shù)據(jù)的訪問速度,因為存儲引擎不再需要進行全表掃描來獲取數(shù)據(jù),數(shù)據(jù)分布在各個節(jié)點之中。
B+Tree索引
是B-Tree的改進版本,同時也是數(shù)據(jù)庫索引索引所采用的存儲結(jié)構(gòu)。數(shù)據(jù)都在葉子節(jié)點上,并且增加了順序訪問指針,每個葉子節(jié)點都指向相鄰的葉子節(jié)點的地址。相比B-Tree來說,進行范圍查找時只需要查找兩個節(jié)點,進行遍歷即可。而B-Tree需要獲取所有節(jié)點,相比之下B+Tree效率更高。
B+tree性質(zhì):
n棵子tree的節(jié)點包含n個關(guān)鍵字,不用來保存數(shù)據(jù)而是保存數(shù)據(jù)的索引。
所有的葉子結(jié)點中包含了全部關(guān)鍵字的信息,及指向含這些關(guān)鍵字記錄的指針,且葉子結(jié)點本身依關(guān)鍵字的大小自小而大順序鏈接。
所有的非終端結(jié)點可以看成是索引部分,結(jié)點中僅含其子樹中的最大(或最小)關(guān)鍵字。
B+ 樹中,數(shù)據(jù)對象的插入和刪除僅在葉節(jié)點上進行。
B+樹有2個頭指針,一個是樹的根節(jié)點,一個是最小關(guān)鍵碼的葉節(jié)點。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
數(shù)據(jù)
-
存儲
-
數(shù)據(jù)結(jié)構(gòu)
-
MySQL
-
索引
相關(guān)推薦
mysql索引簡介
發(fā)表于 04-13 06:50
labview如何實現(xiàn)間隔索引功能,比如有在循環(huán)里有10個數(shù),1 2 3.。.。8 9 10,我想索引1 3 5 7 9或者 2 4 6 8 10,請大神指導(dǎo)
發(fā)表于 07-07 11:05
二步索引算法的原理及特點是什么?如何去實現(xiàn)二步索引法OSD電路?如何去驗證OSD電路?
發(fā)表于 05-06 07:08
快?底層怎么實現(xiàn)的?2.索引失效的情況有哪些?失效的原因是什么?簡潔描述索引是快速查找特定列值的行數(shù)據(jù)的,一種優(yōu)化查詢的數(shù)據(jù)結(jié)構(gòu)。查找特定列值。例如一條sql里的查詢條件是姓名 nam
發(fā)表于 07-28 15:30
對海量XML文檔的索引查詢技術(shù)進行研究,提出一種XML數(shù)據(jù)分頁索引查詢實現(xiàn)方法。該方法把頁面元素標(biāo)記數(shù)量作為數(shù)據(jù)分頁依據(jù),建立XML數(shù)據(jù)的分頁索引,并在該分頁
發(fā)表于 03-31 10:07
?10次下載
BBS 是教育網(wǎng)的一大特色,也是傳統(tǒng)搜索引擎搜索的盲點,本文系統(tǒng)介紹了根據(jù)教育網(wǎng)BBS 的特點建立BBS 搜索引擎的關(guān)鍵技術(shù)和實現(xiàn)方法。關(guān)鍵詞:搜索引擎,Telnet 協(xié)議,BBS,
發(fā)表于 06-17 11:28
?14次下載
本文在對Lucene 全文檢索、索引開發(fā)包深入研究的基礎(chǔ)上,設(shè)計了多索引器索引方案,有效地減少了索引時間,提高了索引效率;在建立倒排
發(fā)表于 12-18 16:27
?13次下載
本文還利用Java技術(shù)對搜索引擎的三個核心部分即網(wǎng)絡(luò)蜘蛛、網(wǎng)頁索引、搜索進行了實現(xiàn)。索引和搜索部分借助Lucene全文搜索引擎庫中的Java
發(fā)表于 05-07 14:14
?35次下載
簡單介紹了Redis的五種對象類型和它們的底層實現(xiàn)。事實上,Redis的高效性和靈活性正是得益于對于同一個對象類型采取不同的底層結(jié)構(gòu),并在必要的時候?qū)Χ哌M行轉(zhuǎn)換;以及各種底層結(jié)構(gòu)對內(nèi)
發(fā)表于 11-25 15:11
?4484次閱讀
針對分布式存儲系統(tǒng)上使用非主鍵訪問數(shù)據(jù)帶來的性能問題,探討在分布式存儲系統(tǒng)上實現(xiàn)索引的相關(guān)關(guān)鍵技術(shù)。在充分分析分布式存儲特征的基礎(chǔ)上,提出了分布式索引設(shè)計和實現(xiàn)的關(guān)鍵點,并結(jié)合分布式存
發(fā)表于 12-25 10:01
?0次下載
Java底層實現(xiàn)——CPU的10個術(shù)語
發(fā)表于 03-28 14:14
?6259次閱讀
引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。
發(fā)表于 07-25 08:07
?2747次閱讀
的數(shù)據(jù)結(jié)構(gòu),以協(xié)助快速查詢、更新數(shù)據(jù)庫表中數(shù)據(jù)。索引的實現(xiàn)通常使用B樹及其變種B+樹。更通俗的說,索引就相當(dāng)于目錄。為了方便查找書中的內(nèi)容,通過對內(nèi)容建立索引形成目錄。而且
發(fā)表于 10-09 10:19
?2947次閱讀
Redis是一種內(nèi)存鍵值數(shù)據(jù)庫,常用于緩存、消息隊列、實時數(shù)據(jù)分析等場景。它的高性能得益于其精心設(shè)計的數(shù)據(jù)結(jié)構(gòu)和底層實現(xiàn)。本文將詳細介紹Redis常用的數(shù)據(jù)結(jié)構(gòu)和它們的底層實現(xiàn)。 Re
發(fā)表于 12-05 10:14
?620次閱讀
作為開發(fā)人員,碰到了執(zhí)行時間較長的 sql 時,基本上大家都會說” 加個索引吧”。但是索引是什么東西,索引有哪些特性,下面和大家簡單討論一下。
發(fā)表于 12-24 16:20
?1314次閱讀
評論