萬物 歸於算法 數據結構;理解更深刻
如:索引->B+Tree->最左匹配原則;左模糊查詢不走索引
索引 B+ tree 平衡多路查找樹+鏈表
葉子節點鏈表 支持 范圍查詢走索引 不過放在組合索引最后一個 知道開始的節點 結束的節點 直接取出一段鏈表
所以 同樣范圍的查詢 > < between 比 in 效率的高 應該
q&a:為啥不用 二叉 ?可能單從數據結構來看 時間復雜度 空間復雜度 平均查找時間 二叉更優 (待研究)但是 具體問題 具體分析 多路 減少層數 減少磁盤io
// 唯一索引查找更快 因為查到第一個就不繼續查了 和limit 一樣 查夠了 就停止查了
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 時,會轉化成鏈表。
時間復雜度 空間復雜度 平均查找時間 時間空間的取舍 現在一般相對空間 時間更稀缺 所以 一般選擇 可以 犧牲空間換取時間