优点
- 大大减少了服务器需要扫描的数据量索引的优点
- 帮助服务器避免排序和临时表
- 将随机io变成顺序io
索引的用处
- 快速查找匹配 WHERE子句的行
- 从 consideration中消除行如果可以在多个索引之间进行选择,mysq通常会使用找到最少行的索引
- 如果表具有多列索引,则优化器可以使用索引的任何最左前缀来查找行
- 当有表连接的时候,从其他表检索行数据
- 查找特定索引列的min或max值
- 如果排序或分组时在可用索引的最左前缀上完成的,则对表进行排序和分组
- 在某些情况下,可以优化查询以检索值而无需査询数据行
索引的分类
- 主键索引
- 唯一索引
- 普通索引
- 全文索引
- 组合索引
技术名词
- 回表
如果创建索引的键是其他字段,那么在叶子节点中存储的是该记录的主键,然后再通过主键索引找到对应的记录叫做回表。
- 覆盖索引
如果一个索引包含所有需要查询的字段的值,我们称之为覆盖索引
- 最左匹配
最左匹配原则都是针对联合索引来说的,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。
like如果是"J%"还是可以命中索引,"%J"就不行
索引下推在非主键索引上的优化,可以有效减少回表的次数,大大提升了查询的效率。
