范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MySQL连explain的type类型都没搞清楚,怎敢说精通SQL优化?

  我们在使用SQL语句查询表数据时,提前用explain进行语句分析是一个非常好的习惯。通过explain输出sql的详细执行信息,就可以针对性的进行sql优化。
  今天我们来分析一下,在explain中11种不同type代表的含义以及其应用场景。1,system
  应用场景:表中只有一条数据,且存储引擎可以准确的统计到这条数据。
  system一般出现在MyISAM、memory类型的表查询中。
  由于我们一般使用的存储引擎都是InnoDB,所以system这种类型很少会用到。2,const
  应用场景:通过主键或者唯一索引 等值查询 来定位一条数据。
  比如:select * from test where id = 1;
  我们知道,MySQL底层使用B+树来保存数据,其结构大体可类似下图,
  那么我们在m字段上创建唯一索引约束,如果想找到m=103的记录,通过二分法只需简单两步就可以定位到m=103。
  即100->102->103。
  即使对于一张记录很多的真正的业务表,因为B+树矮胖的结构,定位一条唯一索引中的记录,速度也是非常快的。
  可以粗略的认为,这种查询速度是常数级的。
  所以,MySQL就把这种唯一索引或主键(主键也是一种唯一索引)等值匹配的查询定义为const(常数级)。
  需要注意的是,由于唯一索引中允许存在多个null值,所以如果对唯一索引进行null值查询,是没法用const的。3,eq_ref
  应用场景:在进行多表连接查询时,被驱动表通过主键或唯一索引键进行 等值查询 。
  比如:SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id;
  4,ref
  应用场景:普通二级索引等值查询。
  比如:select * from t2 where key2 =4;
  除了唯一索引,我们更多的会使用普通的二级索引。
  由于通过二级索引,可能会查询到多个匹配值,相比const性能差那么一点。
  MySQL就把这种类型的查询定义为了ref。
  在上面我们说到,由于唯一索引可能存在多个null,所以用不了const。
  那对于 select * from t2 where key2 is null 来说,不管是唯一索引还是普通索引,其最多用到ref这种类型。5,ref_or_null
  应用场景:命中索引时,查询条件除了等值查询,还包含null值查询。
  比如:select * from t2 where key2 =4 or key2 is null;
  其实看名字就很容易理解,MySQL会在B+树上,找到key2=1和key2 is null 这两种记录范围值,然后拿到主键id去回表查询相关信息。6,index_merge
  应用场景:查询条件可以命中多个索引的情况。
  比如:select * from t3 where key1 =3 or key2 =4;
  索引合并其实也很好理解,当查询条件可以命中多个索引时,MySQL会尝试在两个索引树查找匹配的条件,然后将结果其合并起来。7,unique_subquery
  应用场景:查询条件包含子查询,并且子查询的列可以进行主键等值匹配。
  比如:SELECT * FROM t2 WHERE t2.key2 IN ( SELECT id FROM t3 WHERE t2.key2 = t3.key2 ) OR t2.key2 = 1;
  通过查看MySQL优化的执行sql,可以看到MySQL将in子查询优化为了exist语句,并且在主键索引上进行了等值查询。
  MySQL优化后的语句:/* select#1 */ select `dbs`.`t2`.`id` AS `id`,`dbs`.`t2`.`key2` AS `key2` from `dbs`.`t2` where ((`dbs`.`t2`.`key2`,(((`dbs`.`t2`.`key2`) in t3 on PRIMARY where ((`dbs`.`t2`.`key2` = `dbs`.`t3`.`key2`) and ((`dbs`.`t2`.`key2`) = `dbs`.`t3`.`id`))))) or (`dbs`.`t2`.`key2` = 1));8,index_subquery
  应用场景:查询条件包含子查询,并且子查询的列可以通过索引进行等值匹配。
  比如:SELECT * FROM t2 WHERE t2.key2 IN ( SELECT key1 FROM t3 WHERE t2.key2 = t3.key2 ) OR t2.key2 = 1;
  index_subquery和unique_subquery的区别在于子查询中的列是唯一索引还是普通的二级索引。9,range
  应用场景:命中索引时,查询某一个范围内的结果。
  比如:select * from t3 where t3.key1 >1 and t3.key1<3;
  在实际的业务场景中,对某个列进行范围查询还是很常见的需求。10,index
  应用场景:直接在某个索引树上做条件判断,并且不需要回表。
  比如:select t3.key1 from t3 where t3.key2 =6 ;
  当我们创建了联合索引idx_key1_key2(key1,key2)时,判断条件key2=6时,其虽然不满足索引的最左前缀原则,但是我们可以遍历idx_key1_key2这颗索引树,找到key2=6的记录即可。
  由于查询结果需要的key1在这个联合索引上,也不需要回表,此时就可以使用index。
  相对来说,index的性能是比较慢的。11,all
  应用场景:直接遍历整个聚簇索引。
  比如: select * from t1;
  当MySQL无法通过where条件匹配到合适的索引或者因为全部扫描的代价更小时,MySQL就会选择all这种类型来全表扫描。
  这种方式也是最不推荐的。最后
  总得来说,我们在进行查询时,查询类型可分为两大类:全部扫描和索引查询。
  索引查询又可以细分:
  1,唯一索引等值查询。
  2,普通索引等值查询。
  3,普通索引范围查询。
  4,扫描整个索引树。
  对于一条查询sql来说,不同的查询类型虽然结果可能是一样的,但是其性能却可能天差地别。
  不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。
  建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,只有不断的实践,才能让自己的sql能力越来越强。
  #头条创作挑战赛#
  我是@程序员拾山,坚持技术分享,期待与大家一起学习成长,也感谢您的点赞和关注。

macOS用户主要受广告软件困扰Windows用户易受勒索软件攻击IT之家2月23日消息,根据网络安全公司Malwarebytes公布的最新报告,macOS和Windows用户所面临的网络安全风险存在差异,攻击者针对两个平台采取了不同的攻击策略。肉欲横流的娱乐圈,原本清纯的她,也加入了秀性感的行列黄晓明的前任里,各有各的两把刷子。秦岚,稳坐姐圈气质挂的头把交椅baby,脸在江山稳占85花。唯独李菲儿,一路糊了下去。01hr这两天,李菲儿因为后背线条登上热搜。起因是她在社交平黑鲨6Pro系列手机发布无望IT之家2月22日消息,黑鲨手机目前处于传闻的危机中,曾规划的黑鲨6系列新品手机估计是发布无望了。今天,微博博主数码闲聊站透露了黑鲨6系列手机的配置规格,可以说符合2023年主流旗美女明星宋佳的性感尖头高跟鞋今天给大伙们带来了美女明星宋佳的性感尖头高跟鞋美图,都是尖头高跟鞋哦,找图不易,大家如果喜欢的话,多多点赞,多多支持,先谢谢大家了。游戏新春创作纪明星宋佳美女明星宋佳商场试鞋,红色名人名言摘录人生篇1人生最美好的,就是你停止生存时,也还能以你创造的一切为人民服务。奥斯特洛夫斯基2人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来。奥斯特洛夫斯基3人生富贵驹过隙,惟有勿因喜而轻诺勿因喜而轻诺很多时候我们习惯去承诺,在违背诺言的时候,又会指责对方对自己不信任。那么信任是什么?信任是由一个个坚定的承诺堆砌起来的,你遵守的承诺越多,信任的塔就越牢固。而一旦违背诺越南美女究竟有多美?可以说娇小玲珑,貌美如花身材曲线一级棒越南绝对是一个神奇的国家,提到它,我们肯定不会很陌生,因为它就是我们的邻国,和广西接壤。越南无论是生活习惯还是风土人情都和我们国内很相似,被称为亚洲小中华那里的美女真的很像我们江南蔡依林参加米兰时装周,意外被路人拍下素颜照,42岁真实模样曝光2月23日,有网友在凌晨发布视频,表示在意大利米兰的文艺复兴百货,偶遇歌手蔡依林,并拍下其素颜照。该名网友是蔡依林多年歌迷,她形容偶像素颜的模样非常漂亮,颜值依旧很高。从视频中可见比豆腐还嫩的橙子芝士云朵蛋糕被追着夸好看!轻轻咬下去就像咬在云朵上这句形容通常用在在轻芝士蛋糕的赞美上,今天我们也是推荐一款芝士蛋糕,它的那顶白帽子也有一样的口感,这个芝士蛋糕是双层的,下层是橙子味的芝士蛋糕,上面是烤蛋白没有阴道的石女,到底是怎么回事?和正常女性相比有何区别?人是一种神秘的存在,根据性别,可以将人类分为两类人,一类是男人,一类是女人,在思维方式以及生理构造方面,男人与女人有非常大的区别。对于女生来说,拥有独特的生理器官,也正是因为子宫以假发定制哪家最好?真无痕真隐形,这个效果我爱了!对于发友来说,假发是能够帮助我们恢复自信,找回形象的一种高效方法。那么假发店这么多,假发定制哪家最好?我们应该去哪买假发,买什么样的假发,才更合适呢?市场上的假发种类繁多当你犯选择
催化诱导硫化锂的电子结构转变研究取得新进展中国网中国发展门户网讯近日,中国科学院金属研究所科研人员在前期高效锂硫电池催化剂研究的基础上,提出了筛选锂硫电池催化剂的新策略。通过诱导吸附于催化剂表面的硫化锂的电子结构绝缘金属性大英博物馆里不属于英国的国宝级文物,每一个都是无价之宝大英博物馆,一个除了名字以外,几乎其他东西都不属于英国的博物馆。大英博物馆拥有藏品800多万件,其中展出的仅为1左右,并且大多数都是从世界各地劫掠而来的。近些年来,要求大英博物馆归罕见奇观!这张狐狸脸太震撼来源江阴日报江阴网今年7月有摄影师在新疆库木库里沙漠用无人机记录下神奇一幕两汪湖水,一道沙梁,从高空俯瞰宛如正在凝视天空的沙漠之狐,据了解库木库里沙漠干旱少雨一场强降雨过后出现了这罕见的历史照片,会让你不寒而栗从未解之谜到富人和名人从未见过的照片,这个多合一的画廊将带给您所有的感觉。我们用罕见的图像突出了历史上最美好的时刻,这些图像将永远改变您看待过去的方式。如果你喜欢历史,我们有一张最特拉斯来了,英国新首相即将出炉对,你没看错,我说的是特拉斯,不是马斯克的特斯拉电动汽车。特拉斯这个特拉斯是目前英国首相候选人,她的竞争对手是印裔的苏纳克,也是热门人选,尤其印度血统光环。苏那克这两位各有特点,特深度分析国乒女队为何采用罕见选拔规则?伊藤美诚改变了什么?2022年成都世乒赛正在步步逼近,目前国乒男队的名单已经出炉,其中第五人林高远完全是凭借队内选拔赛第一名的成绩而获得的,这也算是惯例女队虽然已经打完了选拔赛,但第五人却并未确定,因白露吃3宝,不把医生找,9月7号白露,3宝是啥?咋做才好吃白露吃3宝,不把医生找,9月7号白露,3宝是啥?咋做才好吃。哈喽,大家好,我是大厨江一舟,今天又到了和大家分享美食的时刻了,你准备好了吗?时间过得真快,9月7号马上就要到24节气当9月6号排列五第22239期规律走势图推荐数据芝麻参考千位12345679重点1234579百位12345689重点1234689十位01234789重点0124789个位01346789重点0136789仅供参考,码无绝对,对错勿怪人可以卑微到什么程度?从卑微到抑郁的孤独女孩自述17岁,我从农村来到城市读大学,土里土气,又有些自以为是的骄傲。直到现在,我才明白一个道理,或许坐井观天也是一种幸福,正所谓无知无畏,禁足于自我满足致终何尝不是一种美满和幸福。大学中医养生身上筋结散,体内百病除筋长一寸,延寿十年!什么是筋结?筋脉遍布全身,联系带动骨关节运动,人一老就会弯腰驼背,手上脚上出现筋疙瘩,按上去隐隐作痛,这就是中医称作筋结。还有一个更加直观的现象是,年轻的时候1中医说的痰是什么?红痰绿痰黄痰灰痰,都预示哪些疾病不少人只要咳嗽就会有痰,咳出痰不一样,通常是透明痰脓性黏液痰,有时痰液中带血。一提到痰液人们就非常恶心,但这是肺部健康的外在表现,通过观察痰液的质地颜色和量气味等来初步判断疾病。最