ICP(Index Condition Pushdown): 在 MySQL5.6 之前, 存储引擎会通过遍历索引定位基表中 的行, 然后返回给 Server 层, 再去为这些数据进行 WHERE 后的条件过滤. MySQL5.6 之后支持 ICP, 如果 WHERE 条件可以使用索引, MySQL 会把这部分操作放到存储引擎层, 存储引擎通过索引过滤, 把满足条件的行从表中读出. ICP 能减少存储引擎访问基表的次数和 Server 层访问存储引擎 的次数.
MRR(Multi-Range Read Optimization):MRR 的作用就是把普通索引叶子节点上找到的主键值集合放到 read_rnd_buffer, 然后再该 buffer 中对主键值进行排序, 最后再利用已经排好序的主键值集合去访问表中的数据, 这样就将原来的随机 I/O 转化为顺序 I/O, 降低了查询过程中的 I/O 开销.
BKA(Batched Key Access):BKA 是提高表 join 性能的算法, 其作用是在读取被 join 表的记录的时候使用顺序 I/O.
来源: http://www.bubuko.com/infodetail-3202775.html