InnoDB索引和使用

了解B+树前,先了解一下二叉查找树和平衡二叉树。二叉查找树规定(非严谨定义)左子树键值小于根键值,根键值小于右子树键值。
//二叉树查找树图片

平衡二叉树在二叉查找树的基础上,还要求任意节点的左右子树高度差不超过1,目的是通过降低树的高度来减少查询次数。

//平衡二叉树图片

B+树的定义较为复杂,先看一个高度为2的B+树:

//B+树图片

父节点的值都能在子节点里找到,叶子节点包含了所有的值。同时叶子节点上的值单调递增,节点和节点之间有双向索引。
  1. InnoDB中的索引结构
    B+树结构
    聚集索引,叶子节点包含键值和数据页地址。数据页里存放了行数据
    //图
    辅助索引,叶子节点包含键值和聚集索引键,用聚集索引键去聚集索引查找数据。由此看出,通过聚集索引找数据更直接,更快。
    //图

  2. 索引的部分应用
    联合索引
    覆盖索引
    MRR
    ICP
    不使用索引的情况

4.SQL语句where条件提取

5.实际SQL分析