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+树