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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性