MySQL 索引合并

是在 MySQL 5.0 后引入的的索引合并策略,它将每个索引查询的结果进行合并。

合并算法有三种:intersect(交集)、union(并集)、sort_union(不常见)。

阅读更多

MySQL 索引下推

在 MySQL 5.6 版本后加入的新特性索引下推(Index Condition Pushdown)。 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。

Index Filter 与 Table Filter 分离,Index Filter 下降到 InnoDB 的索引层面进行过滤,减少了回表与返回 MySQL Server 层的记录交互开销,提高了 SQL 的执行效率。

阅读更多

MySQL 索引失效情况

本文整理了 MySQL InnoDB 存储引擎中,常见导致索引失效的原因。

MySQL 是否使用索引通常取决于优化器估算的结果,如果计算结果认为全表扫描比使用索引还快,那通常就使用全表扫描。

以下两大类查询语句会导致查询就算走索引也需要对结果进行处理,最终优化器不会使用索引进行查询:

  1. 违反最左匹配原则
  2. 索引列上面做操作
阅读更多

MySQL 索引使用的原则

在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。

Innodb 存储引擎的 B-Tree 索引使用的存储结构实际上是 B+Tree。本文总结的几个索引使用原则主要基于 Innodb 存储引擎,原理便是依托于 B+ 树的特性。

阅读更多