干了三年多的测试了,公司对数据比较敏感,平时工作中会用到大量的SQL操作有一些心得体会,总结下。
1. B+树
1.1 什么是N叉树
二叉树只有两个分支,N叉树有N个分支
B树是一个有序的多路分支查询树
也遵循二叉树,左子树的小于上个节点的关键字,右子树大于上个节点的关键字,同一个叶子左边小于右边
1.2 B树
- B树
每一层都有数据的
B树–>B+树
非叶子结点只存记录和指针,叶子结点存数据
所谓的根节点就是树的最顶端的节点, 继续往下分为子节点, 当不断细分直到不再有子节点时为叶子节点。
1.3 B+树
B+树如下:非叶子结点只存记录和指针,叶子结点存数据,极大扩展了空间。
优势:
2 回表及索引
2.1 回表
2.1.1 什么是回表
查了普通索引又去查主键索引就是回表;普通索引只存了主键值和那个字段值;
如果某个字段没有索引那就全文查找。
2.1.2 索引覆盖
2.1.2 最左匹配
针对于联合索 name,age是联合索引, 写成name =? and age=?就可以命中,写成age=? and name =? 可能(优化器会不会优化)会全表扫描
-
联合索引
多个字段的索引, -
小表驱动大表
-
命中索引
-
强制使用索引