面试问我SQL回表 我瞬间蒙了

  • 电脑网络维修
  • 2024-11-15

咱们最近在看关于Mysql 的关系常识,也和如今面试的小同伴们做了一些采访,问到了一些关系的面试题,说瞎话,如今面试问的是越来越复杂了,很多时刻也不从基础问了,间接名目走起,而后深挖名目中的一些疑问,接着就是数据库中的关系疑问,当天了不起来和大家一同聊一下关于 Mysql 几个经常问,然而却让人很蒙圈的面试题。

索引笼罩

在面试的时刻,面试官很多会提问道提升SQL,至于怎样提升,了不起就不用再继续赘述这个疑问,咱们往下加长,你了解索引笼罩么?

索引笼罩(Covering Index)或称为笼罩索引,是数据库中的一种提升手腕。

当咱们口头一个SQL查问时,假设只须要查问某几个字段的值,并且这几个字段的数据都曾经被包括在某一个索引中(而不是全表扫描),那么数据库引擎就会间接经过这个索引来取得数据,而无需再回表查问,从而大大缩小了I/O操作,提高了查问效率。

索引笼罩的好处就比如有:

这个咱们就牵扯到回表查问了?面试官普通就会套路的继续往下问,那你知道回表操作么?

SQL回表

那么什么是 SQL 回表呢?

SQL回表,在MySQL数据库特意是InnoDB存储引擎中,是一个关键的概念。

SQL回表是指在经常使用非聚簇索引(也称为辅佐索引或二级索引)启动查问时,由于非聚簇索引中只存储了索引字段的值和对应的主键(聚簇索引)键值,因此,假设须要失掉非索引列的数据,则须要依据主键(聚簇索引)中的键值去查找实践的数据行。这个环节被称为“回表”。

回表的原理

假定有一个用户表users,包括id(主键)、name和age三个字段,其中在name字段上建设了非聚簇索引。

口头查问SELECT * FROM users WHERE时,会出现回表。由于首先会经过name上的非聚簇索引找到满足条件的id,而后再依据这些id回到聚簇索引中查找完整的用户数据。

而查问SELECT id, name FROM users WHERE则不会回表,由于所需的数据都在非聚簇索引中可以找到。

而回表操作会参与I/O次数,从而或者影响查问功能。特意是在大表和复杂查问场景下,回表操作或者成为功能瓶颈。

为了缩小回表操作,可以思索将须要查问的字段参与到索引中,构成复合索引(也称为联结索引或笼罩索引)。这样,查问时就可以间接从索引中失掉到须要的数据,而无需回表。

所以,建设索引的时刻,咱们要十分留意,并不是说索引不好,而是说要会加才可以。

索引的最左婚配准则

有的时刻,咱们建设索引大局部都不会只是独自的一个字段,所以就有了复合索引。

索引的最左婚配准则(Leftmost Prefix Rule) 关键是在经常使用复合索引(也称为多列索引或多字段索引)时的一个关键概念。这个准则指出,当经常使用复合索引启动查问时,查问条件应该尽或者地从索引的最左边开局婚配,这样索引能力被有效地经常使用。

当你基于复合索引启动查问时,查问条件必定包括索引的最左边的一列或多列,以便索引能够被有效地经常使用。例如,假设你有一个基于(last_name, first_name)的复合索引,以下查问可以有效地经常使用这个索引:

查问基于last_name:SELECT * FROM employees WHERE last_name = 'Smith';

查问基于last_name和first_name:SELECT * FROM employees WHERE last_name = 'Smith' AND first_name = 'John'; 然而,以下查问则不能有效地经常使用这个索引(由于它没有包括索引的最左边的列last_name):

查问仅基于first_name:SELECT * FROM employees WHERE first_name = 'John';

在创立复合索引时,列的顺序很关键。你应该将最罕用于查问条件的列放在索引的最左边。例如,假设你经常基于last_name启动查问,但很少基于first_name启动查问,那么你应该创立一个基于(last_name, first_name)的索引,而不是基于(first_name, last_name)的索引。

只管最左婚配准则是一个关键的概念,但并不象征着你必定一直遵照它。在实践运行中,你须要依据查问的需求和数据的散布来选择能否经常使用复合索引以及索引的列顺序。

你学会了么?

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8560.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号