MySQL 索引篇

索引原理

B - Tree

  • 多路平衡查找树(每个节点最多m(m>=2)个孩子,成为 m 阶或者度)
  • 叶子节点具有相同的深度
  • 节点中的数据 key 从左到右是递增的
    image.png

B+ 树

  • MySQL是使用的 B+树做的索引
  • 只有叶子节点储存数据, 可以增加树的度
  • 叶子节点通过指针相连,可以实现范围查询
    image.png

    度是不是越大越好:不是,为了更好读取数据,要根据磁盘块大小来划分

索引类型

  • 普通索引
  • 唯一索引
  • 多列索引
  • 逐渐索引
  • 全文索引, InnoDB不支持

索引失效

模糊匹配、类型转换、最左匹配

  • 以 %开头的like 语句
  • 出现类型隐式转换
  • 没有满足最左匹配

聚簇索引和非聚簇索引

  • 二者的区别是指 B+树叶节点存的是指针还是数据记录
  • MyISAM索引和数据分离,使用的非聚簇索引
  • InnoDB数据文件就是索引文件,逐渐索引就是局促索引

非聚簇索引

image.png

叶子节点存储的指针

聚簇索引

image.png

叶子节点存储数据(主键索引)

聚簇索引与辅助索引

image.png

辅助索引先找到主键以后,再根据主键找到数据

如何排查慢查询

  • 排查是否缺索引,是否合理
  • 开启并且查询按查询日志
  • explain 排查

你可能感兴趣的:(MySQL 索引篇)