MySQL---索引
索引下推:
概念:
索引下推(Index Condition Pushdown,简称ICP),实质上就是指将部分上层(服务层)负责的事情,交给了下层(引擎层)去处理。
是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。
例子:
假如需要查询姓郭的20岁的男性用户信息,user表存在主键索引和非聚簇索引(name,age),sql如下:
mysq> select * from user where name like '郭 %' and sex=1 and age=20;
根据“最左前缀原则”,在搜索索引树的时候,只能匹配到名字第一个字是‘郭’的记录,因为name使用范围查询,导致age索引失效。
所以根据name索引查询到主键值后,在根据主键值逐个回表,对比age和sex是否符合。这就导致回表的次数较多。
MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包含的字段先做判断,过滤掉不符合条件的记录,减少回表次数。
InnoDB存储引擎 在 (name,age) 索引内部会先判断 age 是否等于 10,对于不等于 10 的记录,直接判断并跳过。之后在根据主键值逐个回表,对比age和sex是否符合。
本文来自博客园,作者:日月星宿,转载请注明原文链接:https://www.cnblogs.com/ryxxtd/p/16592059.html