最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 14:03:19
文檔

【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別

【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別:【摘要】 這是從《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》第六章摘錄的一些知識(shí)點(diǎn)。 【主題】 Hash索引 B-Tree索引 【內(nèi)容】 1. Hash索引 Hash 索引結(jié)構(gòu)的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節(jié)點(diǎn)到枝節(jié)點(diǎn),最后才能訪(fǎng)問(wèn)到頁(yè)節(jié)點(diǎn)
推薦度:
導(dǎo)讀【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別:【摘要】 這是從《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》第六章摘錄的一些知識(shí)點(diǎn)。 【主題】 Hash索引 B-Tree索引 【內(nèi)容】 1. Hash索引 Hash 索引結(jié)構(gòu)的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節(jié)點(diǎn)到枝節(jié)點(diǎn),最后才能訪(fǎng)問(wèn)到頁(yè)節(jié)點(diǎn)

2. B-Tree索引

B-Tree 索引是 MySQL 數(shù)據(jù)庫(kù)中使用最為頻繁的索引類(lèi)型,除了 Archive 存儲(chǔ)引擎之外的其他所有的存儲(chǔ)引擎都支持 B-Tree 索引。不僅僅在 MySQL 中是如此,實(shí)際上在其他的很多數(shù)據(jù)庫(kù)管理系統(tǒng)中B-Tree 索引也同樣是作為最主要的索引類(lèi)型,這主要是因?yàn)?B-Tree 索引的存儲(chǔ)結(jié)構(gòu)在數(shù)據(jù)庫(kù)的數(shù)據(jù)檢
索中有非常優(yōu)異的表現(xiàn)。
一般來(lái)說(shuō), MySQL 中的 B-Tree 索引的物理文件大多都是以 Balance Tree 的結(jié)構(gòu)來(lái)存儲(chǔ)的,也就 是所有實(shí)際需要的數(shù)據(jù)都存放于 Tree 的 Leaf Node ,而且到任何一個(gè) Leaf Node 的最短路徑的長(zhǎng)度都是完全相同的,所以我們大家都稱(chēng)之為 B-Tree 索引當(dāng)然,可能各種數(shù)據(jù)庫(kù)(或 MySQL 的各種存儲(chǔ)引擎)在存放自己的 B-Tree 索引的時(shí)候會(huì)對(duì)存儲(chǔ)結(jié)構(gòu)稍作改造。如 Innodb 存儲(chǔ)引擎的 B-Tree 索引實(shí)際使用的存儲(chǔ)結(jié)構(gòu)實(shí)際上是 B+Tree ,也就是在 B-Tree 數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上做了很小的改造,在每一個(gè)
Leaf Node 上面出了存放索引鍵的相關(guān)信息之外,還存儲(chǔ)了指向與該 Leaf Node 相鄰的后一個(gè) LeafNode 的指針信息,這主要是為了加快檢索多個(gè)相鄰 Leaf Node 的效率考慮。
在 Innodb 存儲(chǔ)引擎中,存在兩種不同形式的索引,一種是 Cluster 形式的主鍵索引( Primary Key ),另外一種則是和其他存儲(chǔ)引擎(如 MyISAM 存儲(chǔ)引擎)存放形式基本相同的普通 B-Tree 索引,這種索引在 Innodb 存儲(chǔ)引擎中被稱(chēng)為 Secondary Index 。下面我們通過(guò)圖示來(lái)針對(duì)這兩種索引的存放
形式做一個(gè)比較。

圖示中左邊為 Clustered 形式存放的 Primary Key ,右側(cè)則為普通的 B-Tree 索引。兩種 Root Node 和 Branch Nodes 方面都還是完全一樣的。而 Leaf Nodes 就出現(xiàn)差異了。在 Prim中, Leaf Nodes 存放的是表的實(shí)際數(shù)據(jù),不僅僅包括主鍵字段的數(shù)據(jù),還包括其他字段的數(shù)據(jù)據(jù)以主鍵值有序的排列。而 Secondary Index 則和其他普通的 B-Tree 索引沒(méi)有太大的差異,Leaf Nodes 出了存放索引鍵 的相關(guān)信息外,還存放了 Innodb 的主鍵值。

所以,在 Innodb 中如果通過(guò)主鍵來(lái)訪(fǎng)問(wèn)數(shù)據(jù)效率是非常高的,而如果是通過(guò) Secondary Index 來(lái)訪(fǎng)問(wèn)數(shù)據(jù)的話(huà), Innodb 首先通過(guò) Secondary Index 的相關(guān)信息,通過(guò)相應(yīng)的索引鍵檢索到 Leaf Node之后,需要再通過(guò) Leaf Node 中存放的主鍵值再通過(guò)主鍵索引來(lái)獲取相應(yīng)的數(shù)據(jù)行。MyISAM 存儲(chǔ)引擎的主鍵索引和非主鍵索引差別很小,只不過(guò)是主鍵索引的索引鍵是一個(gè)唯一且非空 的鍵而已。而且 MyISAM 存儲(chǔ)引擎的索引和 Innodb 的 Secondary Index 的存儲(chǔ)結(jié)構(gòu)也基本相同,主要的區(qū)別只是 MyISAM 存儲(chǔ)引擎在 Leaf Nodes 上面出了存放索引鍵信息之外,再存放能直接定位到 MyISAM 數(shù)據(jù)文件中相應(yīng)的數(shù)據(jù)行的信息(如 Row Number ),但并不會(huì)存放主鍵的鍵值信息。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別

【MySQL索引】Hash索引與B-Tree索引介紹及區(qū)別:【摘要】 這是從《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)》第六章摘錄的一些知識(shí)點(diǎn)。 【主題】 Hash索引 B-Tree索引 【內(nèi)容】 1. Hash索引 Hash 索引結(jié)構(gòu)的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節(jié)點(diǎn)到枝節(jié)點(diǎn),最后才能訪(fǎng)問(wèn)到頁(yè)節(jié)點(diǎn)
推薦度:
標(biāo)簽: 區(qū)別 介紹 ha
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top