B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?
生活随笔
收集整理的這篇文章主要介紹了
B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
B-Tree/B+-Tree/二叉樹/紅黑樹/Hash表/MySQL底層到底用哪個數據表建立索引做快速查找?
- ~~B-Tree~~
- ==B+Tree==
- ~~二叉樹(Binary Search Tree~~
- ~~紅黑樹(Red/Black Tree~~
- ~~Hash索引~~
B-Tree
1.葉節點具有相同的深度,葉節點的指針為空;
2.所有索引元素不重復;
3.節點中的數據索引從左到右遞增排序。
B+Tree
1.非葉子節點不存儲數據,只存儲索引(冗余),目的是:可以存放更多的索引;
2.葉子結點包含所有索引字段;
3.葉子結點用指針連接,可以提高區間訪問的性能。
二叉樹(Binary Search Tree
若將Col2作為索引,每個節點都會存放索引的字段值key+磁盤地址value,是會節省查找時間;
若將Col1作為索引,則會生成一個右子樹,并不能簡化查找時間。
所以二叉樹不能作為MySQL索引底層數據結構。
紅黑樹(Red/Black Tree
紅黑樹也稱二叉平衡樹,即插入一個節點,會自動做一個平衡,節點左小右大;
弊端:當數據量很大的時候,查找次數也會變多。
Hash索引
hash表其實就是數組+鏈表
1.對索引的key進行一次hash計算就可以定位出數據存儲的位置;
2.很多時候Hash索引比B+Tree索引更高效;
3.僅能滿足“=”,“IN”,不支持范圍查找;
4.Hash沖突(很少發生)。
總結
以上是生活随笔為你收集整理的B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle数据库LOGGINGNOLO
- 下一篇: SQL获取连续时间