1.關於連接
掘金小冊,主要介紹連接的原理
https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c061b0cf265da612577e0f4
left join 的易錯點 :過濾左表用 where 過濾右表用 on 否則會導致數據丟失
2.關於索引
爲什麼索引要用B+樹呢?
1.二叉查找樹: 每個非葉子節點都有最多有2個子節點,並且左子節點小於父節點,右子節點大於父節點
相當於二分查找,一般情況下O(logN)
缺點:如果插入的節點是有序的,那麼會退化成鏈表(右斜樹)時間複雜度O(n)
2.平衡二叉樹(AVL樹) :它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。==》解決二叉查找樹成爲右斜樹 的缺點, 這樣可以讓查詢速度比較穩定,查詢中遍歷節點控制在O(logN)範圍內
缺點:數據量大的時候,樹的高度變大,每個節點對應一個磁盤塊,數據量大的時候,也會和二叉樹一樣,會導致樹的高度變高,增加了io次數,顯然用這種結構存儲數據也是不可取的。
3. B-樹:而B-樹節點中可以放多個元素,主要是爲了降低樹的高度
4.B+樹