1 2 3 4

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是否符合。

  

posted @ 2022-08-16 17:02  日月星宿  阅读(22)  评论(0编辑  收藏  举报