索引下推,这个点你肯定不知道!。md
索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能,主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理,而不是像之前一样放到Server层去做过滤。
虽然这是一个比较简单的概念,但是可能很多不细心的同学对于索引下推会存在一个小小的误区,至于是什么,请看下文。 什么是索引下推
首先,我们创建一张 user 表,同时建立 age_name 的联合索引,同时插入3条测试数据。
然后,我们执行查询 explain SELECT * from user where age >10 and name = "a" ,如下图所示,就会看见 Extra 中显示了 Using index condition ,你可能就知道了,这表示出现了 索引下推 了。
没错,针对这个查询场景就是索引下推,那到底什么是索引下推呢?
按照我们上述的场景,实际上就存在两个索引树,一个是主键索引,存储了具体的数据的信息,另外则是 age_name 的联合索引,保存了主键的ID。
在没有ICP索引下推的时候,这个查询的流程应该是这样(略过无关的细节): Mysql Server层调用API查询存储引擎数据 存储引擎根据联合索引首先通过条件找到所有age>10的数据 找到的每一条数据都根据主键索引进行回表查询,直到找到不符合条件的结果 返回数据给Server层,Server根据条件对结果进行过滤,流程结束
而有了ICP之后的流程则是这样: Mysql Server层调用API查询存储引擎数据 存储引擎根据联合索引首先通过条件找到所有age>10的数据,根据联合索引中已经存在的 name 数据进行过滤,找到符合条件的数据 根据找到符合条件的数据,回表查询 返回数据给Server层,流程结束
对比这两个流程就会很明显的发现,使用ICP之后我们就是简单的通过联合索引中本来就有的数据直接过滤了,不需要再查到一堆无用的数据去Server层进行过滤,这样的话减少了回表的次数和返回的数据,IO次数减少了,对性能有很好的提升。
按照官方文档所说,ICP其实也存在一定的使用限制场景,只说关键的,乱七八糟的不说。 首先,ICP适用于range、ref、eq_ref和ref_or_null的场景下 InnoDB和MyISAM都支持ICP,Mysql partition分表的话也可以使用 对于InndoDB而言,ICP只支持二级索引,因为主键索引它用不上不是吗? 子查询不支持
现在我们基本都使用的5.6以上的版本了,默认就是开启ICP的,想关闭的话可以通过命令 SET optimizer_switch = "index_condition_pushdown=off"; 。 一个小小的误区
一般来说,正常情况下Mysql一次查询都只能走一个索引,我们来修改上述的表结构,把联合索引改为两个单独的索引,数据保持不变
然后我们执行查询 explain SELECT * from user where age >10 and name like "a%" ,结果如下图。
你会发现,我靠,怎么还有索引下推?这不科学对不对,好像无法解释嘛,难道这一次索引下推还能先查出 age 再下推到 name 索引吗,这完全不合理啊。
其实不然,真实的情况是, Using index condition 并不代表一定是使用了索引下推,只是代表可以使用,但是不一定用了…
这个就有点坑爹,可能会对我们判断的时候造成误解啊。
如果你去网上搜很多人举例子这样建索引,然后告诉你这就是索引下推的时候,你可以尽情的喷他了,我们说索引下推一定是在联合索引的情况下,根据联合索引本身就有的数据直接做一次过滤,而不用再进行多次无用的回表再到Server层进行过滤,这一点你要很明确才行。
好了,今天的话题就到这里结束,我是艾小仙,我们下期见。
(本来我想多画两张图的,不过好像觉得这个概念实在太简单了,画的花里胡哨的反而没有意义,就像你说覆盖索引、回表还画好几张图给你解释吗,没有必要对不对,肯定不是因为我懒…)
后台回复【pdf】获取百本计算机电子书和大厂面试精华,文章每周持续更新。我是艾小仙,阿里巴巴技术专家,我们下期见!
3小时魔幻史诗被指又长又闷,几十集电视剧却看得热火朝天指环王重映票房不佳,这部从首次上映到如今已于20年的经典史诗魔幻电影,被大多数人认为的经典。在时隔20年后的重映,除了票房不佳之外,还得到了很多的差评,被指又长又闷,还没有结局。很
国产电视剧请雅俗共赏,该糙时,糙那么一糙糙之雅俗糙这个词最直白的意思是指稻米没有碾过,没有细致的加工,又引申为粗糙,不精细,可以用来形容事物,也可以形容人,形容人时,视情境,可饱可贬。生活中,精致总能让人感觉到雅观,糙则
这种有着变形计式设定的电视剧,真是看得人不胜其烦有多少人还关注着变形计这档真人秀节目,相信很多人都想不到这个节目已经制作了19季了。从2006年开始首播,这个节目有着很好的收视率,早期的节目内容大概是来自城市与来自农村山区的小主
小时候的电视剧,有哪些结局是让你难以接受的呢最近又一部翻拍的天龙八部播出了,其实除了一些年龄较小的观众,人们对于天龙八部的人物经历和故事情节早就熟稔于心。一遍又一遍地翻拍真的略显乏味,我倒是希望翻拍大胆一点,把乔峰的结局给改
真实案件深度挖掘,扫黑风暴震撼播出十四年前,一位丈夫与当地黑恶势力有矛盾,在一次外出时失踪。十四年里,他的妻子坚持上访126次,终于等到了中央督导组。这位中年女性眼含热泪,拍完申诉视频,艰难地爬上高速公路,希望能拦
尼克松拜访毛主席对比安倍接待卢比奥,我们悟出了什么?毛泽东同志在北京,会见了美国时任总统,尼克松在见毛泽东同志前,曾经专门认真研究和读了毛泽东同志的故事和传记,尼克松也在脑海里预演了一万次,见到毛泽东,该如何博弈,如何对话。但是当美
吴孟达肝癌去世的背后,是四个家庭三个女人和每月百万的生活费理娱计划征文第六期一1953年,厦门的一对农村夫妇生下长子,取名吴孟达。因为家庭贫困,小吴孟达常年吃不饱穿不暖,唯一的指望就是家门口的那棵石榴树,每到石榴成熟时,是他最快乐的时候。
如果我的孩子选择艺考,未来就业困难吗?就业问题是困扰各个年龄段人的问题。可能许多家长都希望孩子能够考个教师资格证,当个人民教师,安安稳稳的过完这一辈子。这样的想法完全没有错,只是忽略了现在孩子想创新,敢于创新的精神。传
林妹妹王文娟去世,享年95岁越剧表演艺术家一代越剧宗师王文娟,今晨零时25分去世,享年95岁。王文娟演绎的越剧林妹妹曾是几代人念念不忘的经典。王文娟的林黛玉形象王文娟,1926年12月19日出生于浙江绍兴嵊县
买二手奢侈品也要排队,为什么现在那么火?范主说真香了最近范主看见一则新闻说,2020年中国奢侈品购买力超强,各种奢侈门店经常门口排大队,供不应求不仅如此,国内二手奢侈品市场也是相当火爆,很多二手奢侈品店生意比往年好很多,
史上最强塑料名媛姐妹姐姐嫁总统妹妹当王妃,撕了一辈子范主说豪门姐妹比拼昨天和大家讲了比尔盖茨大女儿的婚礼,这场婚礼不仅让盖茨和梅琳达离婚后首度同框,他们俩的几个孩子也来了。19岁的二女儿Phoebe就在INS上分享了在姐姐婚礼上化妆