索引 B+Tree ; 新建索引 類型方法 BTREE 或 HASH


萬物 歸於算法 數據結構;理解更深刻
如:索引->B+Tree->最左匹配原則;左模糊查詢不走索引

索引 B+ tree 平衡多路查找樹+鏈表

葉子節點鏈表  支持 范圍查詢走索引  不過放在組合索引最后一個  知道開始的節點  結束的節點 直接取出一段鏈表

所以 同樣范圍的查詢   >  <    between   比  in 效率的高  應該  

q&a:為啥不用 二叉 ?可能單從數據結構來看 時間復雜度 空間復雜度 平均查找時間 二叉更優 (待研究)但是 具體問題 具體分析 多路 減少層數  減少磁盤io

1. 【強制】業務上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引。
說明:不要以為唯一索引影響了 insert 速度,這個速度損耗可以忽略,但提高查找速度是明顯的;另外,
即使在應用層做了非常完善的校驗控制,只要沒有唯一索引,根據墨菲定律,必然有臟數據產生。
// 唯一索引查找更快  因為查到第一個就不繼續查了  和limit 一樣  查夠了  就停止查了 
6. 【推薦】利用覆蓋索引來進行查詢操作,避免回表。
說明:如果一本書需要知道第 11 章是什么標題,會翻開第 11 章對應的那一頁嗎?目錄瀏覽一下就好,這
個目錄就是起到覆蓋索引的作用。
正例:能夠建立索引的種類分為主鍵索引、唯一索引、普通索引三種,而覆蓋索引只是一種查詢的一種效
果,用 explain 的結果,extra 列會出現:using index。
 
 

https://blog.csdn.net/hao65103940/article/details/89032538

 

 

B Tree 平衡樹

何為平衡樹

https://blog.csdn.net/qq_33060405/article/details/78510121

 

 

擴展:自平衡樹 紅黑樹

jdk 1.8 HashMap 數據結構由 數組+鏈表 改為 數組+鏈表/紅黑樹

插入時:判斷鏈表長度是否大於8,大於8的話把鏈表轉換為紅黑樹,在紅黑樹中執行插入操作,否則進行鏈表的插入操作

刪除時:刪除元素首先是要找到 桶的位置,然后如果是鏈表,則進行鏈表遍歷,找到需要刪除的元素后,進行刪除;如果是紅黑樹,也是進行樹的遍歷,找到元素刪除后,進行平衡調節,注意,當紅黑樹的節點數小於 6 時,會轉化成鏈表。

 

時間復雜度  空間復雜度   平均查找時間    時間空間的取舍  現在一般相對空間 時間更稀缺  所以 一般選擇  可以 犧牲空間換取時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM