2023年3月31日00:07:57

main
lixicai 3 years ago
parent 16a0fca1f1
commit e35ebb8ba5

@ -110,3 +110,77 @@ hash冲突
### B+Tree索引 ### B+Tree索引
- 基础知识二分查找VS顺序查找
## 二叉查找树
- 左子树的所有值小于根节点的值
- 右子树的所有值大于等于根
- 左右子树都满足上述两个条件。
## AVL树
- 它的左右两个子树的高度差的绝对值不超过1
- 左右两个子树都是一颗平衡二叉树
## B+树(mysql)
- 多叉平衡查找树
> [数据结构演示](http://www.cs.usfca.edu)
标准的B+树叶子结点是单链表但是mysql中优化了一下是双链表。
旋转、构建细节。java岗位不会问做数据库实现。算法导论。
B+树含有非常高的扇出通常超过100在查找一个记录时候可以有效的减少IO操作。
## B树
- 在B+树的前提上,非叶子节点也存数据
## B*树(oracle)
- 在B+树的前提下非叶子节点的同级也有链表的结构在索引查询上比B+树更加有优势
## 聚集索引/聚簇索引
将表的主键用来构造一颗B+树并且将整张表的行记录数据存放在该B+树的叶子节点中。
如果表中没有设置主键那么会有一个rowid
## 辅助索引/二级索引
叶子节点除了数据外每个叶子节点的索引行还包含一个书签bookmark每个索引一颗B+树,不包含行记录的全部数据。
## 回表
通过辅助索引获得主键,然后再通过主键索引来找到一个完整的行记录。
MySQL 通过查询优化器去判断用什么索引,或者全表扫描
## 联合索引/复合索引
将表上的多个列组合起来进行索引我们称为联合索引或者复合索引。
二叉树怎么排的?:最佳左前缀法则
优化SQL的方法减少索引的数量联合索引
一个联合索引只生成一个b+树,对树的维护成本低
## 覆盖索引
覆盖索引不是索引,而是索引的一种优化方式。
从辅助索引中就可以得到查询的记录,而不需要查询聚集索引中的记录。
## 自适应HASH索引
如果5.7以上默认开启热点数据分析自动建立hash索引
监控:热数据 索引,
当 where子句中只有 等于 或者 in条件的时候会命中自建hash
如果查询到 hash search少non_hash search/s比较高则可以关闭自适应hash。
Loading…
Cancel
Save