InnoDB索引和使用
了解B+树前,先了解一下二叉查找树和平衡二叉树。二叉查找树规定(非严谨定义)左子树键值小于根键值,根键值小于右子树键值。
//二叉树查找树图片
平衡二叉树在二叉查找树的基础上,还要求任意节点的左右子树高度差不超过1,目的是通过降低树的高度来减少查询次数。
//平衡二叉树图片
B+树的定义较为复杂,先看一个高度为2的B+树:
//B+树图片
父节点的值都能在子节点里找到,叶子节点包含了所有的值。同时叶子节点上的值单调递增,节点和节点之间有双向索引。
InnoDB中的索引结构
B+树结构
聚集索引,叶子节点包含键值和数据页地址。数据页里存放了行数据
//图
辅助索引,叶子节点包含键值和聚集索引键,用聚集索引键去聚集索引查找数据。由此看出,通过聚集索引找数据更直接,更快。
//图索引的部分应用
联合索引
覆盖索引
MRR
ICP
不使用索引的情况
4.SQL语句where条件提取
5.实际SQL分析