B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?
B-Tree/B+-Tree/二叉樹(shù)/紅黑樹(shù)/Hash表/MySQL底層到底用哪個(gè)數(shù)據(jù)表建立索引做快速查找?
- ~~B-Tree~~
- ==B+Tree==
- ~~二叉樹(shù)(Binary Search Tree~~
- ~~紅黑樹(shù)(Red/Black Tree~~
- ~~Hash索引~~
B-Tree
1.葉節(jié)點(diǎn)具有相同的深度,葉節(jié)點(diǎn)的指針為空;
2.所有索引元素不重復(fù);
3.節(jié)點(diǎn)中的數(shù)據(jù)索引從左到右遞增排序。
B+Tree
1.非葉子節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),只存儲(chǔ)索引(冗余),目的是:可以存放更多的索引;
2.葉子結(jié)點(diǎn)包含所有索引字段;
3.葉子結(jié)點(diǎn)用指針連接,可以提高區(qū)間訪問(wèn)的性能。
二叉樹(shù)(Binary Search Tree
若將Col2作為索引,每個(gè)節(jié)點(diǎn)都會(huì)存放索引的字段值key+磁盤地址value,是會(huì)節(jié)省查找時(shí)間;
若將Col1作為索引,則會(huì)生成一個(gè)右子樹(shù),并不能簡(jiǎn)化查找時(shí)間。
所以二叉樹(shù)不能作為MySQL索引底層數(shù)據(jù)結(jié)構(gòu)。
紅黑樹(shù)(Red/Black Tree
紅黑樹(shù)也稱二叉平衡樹(shù),即插入一個(gè)節(jié)點(diǎn),會(huì)自動(dòng)做一個(gè)平衡,節(jié)點(diǎn)左小右大;
弊端:當(dāng)數(shù)據(jù)量很大的時(shí)候,查找次數(shù)也會(huì)變多。
Hash索引
hash表其實(shí)就是數(shù)組+鏈表
1.對(duì)索引的key進(jìn)行一次hash計(jì)算就可以定位出數(shù)據(jù)存儲(chǔ)的位置;
2.很多時(shí)候Hash索引比B+Tree索引更高效;
3.僅能滿足“=”,“IN”,不支持范圍查找;
4.Hash沖突(很少發(fā)生)。
總結(jié)
以上是生活随笔為你收集整理的B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle数据库LOGGINGNOLO
- 下一篇: SSD固态存储大观(二)