今天听了andy老师讲的直播课程,做个笔记
这次课程主要讲mysql的索引
为什么用 b+tree ,b+树是怎么落地的,sql优化索引怎么做
数据库的索引
hash等值匹配非常快,但是不支持范围查询
递归比较后, 左小右大的插入规律
红黑树是一种特殊结构的,自平衡的二叉树
这种二叉树已经变成链表了
需要用平衡二叉树,一个节点的子节点的高度差绝对值不允许超过1 ,也就是子节点深度差不超过1
树的深度,就是io次数
这个结构的问题是,1,树太高了。2,io利用率太差了,io每次拿一个page,一个pege是4kb(ssd 4k对齐)每次要拿4kb,数组塞不满,所以说io利用率太差了
所以,二叉树不能做硬盘级索引
B-树
所有子节点在一个水平线上
不用uuid和身份证,是因为没有什么顺序,有可能改变整个树的结构,要最小化的更新索引
子节点不再局限于2个子节点,多路平衡查找树
离散度低于15%,会强制使用全表扫描
联合索引要在5个字段以内