MySql索引随记

innodb引擎存储单位是数据页,数据页默认大小为16kb。索引采用b+树(也有数组,散列表的形式),自动为主键创建索引(主键索引也是聚集索引,也就是索引和表数据同时存在于这个b+树的数据结构中)
b+树和b树联系和区别:都是排好序的; 叶子节点(一个数据页)都存储多行数据(一行多浪费);b+树叶子节点包含所有数据,父节点存在冗余(父节点是为其创建的索引),b+树叶子节点之间存在双向指针;
在没有索引(这里指主键索引)的情况下,表数据通过数据页+指针进行顺序存储,索引是为了更方便查询在此基础上生成了b+树,此时索引与数据是同时存在一个数据结构中
MySql索引随记_第1张图片
而普通索引叶子节点存储的则是主键值(很容易理解,总不可能把数据复制一遍到叶子节点),这样再通过主键值在主键索引里面查询即可(也叫回表,所以用主键查询是最好的)
对于联合索引而言(a,b,c),要遵循最左匹配原则,比方说查询条件a=加b=是可以走索引的(a**,ab*,abc),类似b=加c=则不能走索引查询(*bc,**c),而是全表扫描。此外对于范围查询如a>可能会走索引可能不会走(如果回表查询次数较多就不会走了)

你可能感兴趣的:(笔记)