优点

  1. 大大减少了服务器需要扫描的数据量索引的优点
  2. 帮助服务器避免排序和临时表
  3. 将随机io变成顺序io

索引的用处

  1. 快速查找匹配 WHERE子句的行
  2. 从 consideration中消除行如果可以在多个索引之间进行选择,mysq通常会使用找到最少行的索引
  3. 如果表具有多列索引,则优化器可以使用索引的任何最左前缀来查找行
  4. 当有表连接的时候,从其他表检索行数据
  5. 查找特定索引列的min或max值
  6. 如果排序或分组时在可用索引的最左前缀上完成的,则对表进行排序和分组
  7. 在某些情况下,可以优化查询以检索值而无需査询数据行

索引的分类

  • 主键索引
  • 唯一索引
  • 普通索引
  • 全文索引
  • 组合索引

技术名词

  • 回表

如果创建索引的键是其他字段,那么在叶子节点中存储的是该记录的主键,然后再通过主键索引找到对应的记录叫做回表。

  • 覆盖索引

如果一个索引包含所有需要查询的字段的值,我们称之为覆盖索引

  • 最左匹配

最左匹配原则都是针对联合索引来说的,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。

  1. like
  2. 如果是"J%"还是可以命中索引,"%J"就不行

索引下推在非主键索引上的优化,可以有效减少回表的次数,大大提升了查询的效率。