索引基础概念

      

MySQL索引基础_树结构

      

MySQL索引基础_数据_02

      

MySQL索引基础_子节点_03

 索引存储格式

         每个磁盘块是统一的4K大小

         每次搜索的时候都是根据要查找的ID和B树结构最高点的磁盘块所包含的ID做比较.小于磁盘块ID找左边指针指向的磁盘块,介于中间找中间指针指向的磁盘块,大于找右边指针指向的磁盘块

         B树结构  (多路平衡查找树)

            

MySQL索引基础_子节点_04

            

MySQL索引基础_数据_05

        B+树结构

          B树是非叶子节点上也存数据,因为数据的内容大小不固定,数据内容越大.每个磁盘块存储的ID数目越少

          B+树是只在叶子节点存数据,非叶子节点只存ID和磁盘指针

          

MySQL索引基础_树结构_06

         

MySQL索引基础_数据_07

普通列建索引回表

         普通列建索引查询的时候需要遍历两棵不同的B+树,这个过程叫做回表

         

MySQL索引基础_树结构_08

         

MySQL索引基础_树结构_09

       索引覆盖

           

MySQL索引基础_子节点_10

    组合索引(最左匹配原则)

          多列联合创建索引  哪个列在前哪个列在后。查询效果不同。必须先匹配左边列的值,然后才匹配右边列的值.如果左边列无值,那么右边列的索引也会失效

    索引下推

           在回表之前对ID的值进行筛选,减少回表次数

            

MySQL索引基础_数据_11

          name等于zhangsan的有四条记录,默认要回表查询4次,但是索引下推机制在回表查询之前先把age不等于10的先过滤掉,最后只需要回表查询2次即可获取对应的行数据内容

 索引维护

          

MySQL索引基础_子节点_12