索引
让mysql高效读取数据一种排好序的数据结构
数据结构分类
- 二叉树 , 树高度太高 io 效率低
- 红黑树 , 树高度太高 io 效率低
- hash表 , 无法范围查询,hash冲突问题
- b-tree ,多叉平衡树,排好序的,所有节点都存数据
- b+tree mysql 实际用的数据结构 ,b tree变种
- 叶子节点存数据,其它节点不存,同样数据,索引高度更低
- 叶子节点前后索引 方便范围查询
b树

b+树

mysql 查询优化核心问题
对每层数据加载一次的i/o 时间远大于数据处理时间,想要查询到某个数据,必须从树的最高层开始 ,一层一层加载,这也是为啥必须要把树的高度控制在3-4层内原因。
一些数据量概念问题
- 一次加载页的大小 默认是 16kB,