专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

连问15个MySQL送命题,看看你能坚持到第几问?

  话不多说,先放个目录图:
  前言
  本篇文章中列出的有关MySQL的问题,都是作者在平时学习中遇到或者面试中被问到的问题,针对每个问题作者都做了自己的梳理和总结,整篇文章内容很丰富,希望能给读者带来实际的帮助。一、关系型和非关系型的区别,以及使用场景
  关系型数据库:采用关系模型来组织数据的数据库,关系模型就是二维表格模型。一张二维表的表名就是关系,二维表中的一行就是一条记录,二维表中的一列就是一个字段
  优点:容易理解,使用方便,通用的sql语言,易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)
  缺点:磁盘IO是并发的瓶颈,海量数据查询效率低,横向扩展困难,无法简单地通过添加硬件和服务节点来扩展性能和负载能力,需要对数据库进行升级和扩展时,需要停机维护和数据迁移,多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。因为要保证ACID。
  非关系型数据库:分布式,一般不保证遵循ACID原则的数据存储系统。键值对存储,结构不固定。
  优点:结构简单易扩展,高性能灵活的数据模型
  缺点:只适合存储一些较为简单的数据,不适合复杂查询的数据,不适合持久存储海量数据
  因此适合存储较为简单的数据。有一些不能够持久化数据,所以需要和关系型数据库结合。二、Mysql索引优缺点
  索引优点
  1。有助于加快数据检索,降低数据库IO成本,这也是创建索引的最主要的原因。
  2。通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
  3。可以加速表和表之间的连接,实现数据的参考完整性方面特别有意义。
  4。在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间,降低了CPU的消耗。
  索引缺点
  1。创建索引和维护索引需要耗费时间,当数据量增大的时候更加明显
  2。索引需要占物理空间
  3。表中的数据进行增加、删除和修改的时候,索引也要动态的维护,提高了CPU的消耗三、给字段加索引最好怎么加?
  建议创建索引的情况
  1。根据查询要求建立索引:查询频率高、实时要求高的字段应该创建索引,如主键、外键、经常需要连接查询的字段、排序的字段、查询指定范围的字段。
  2。数据量大的大表应该创建索引
  不建议创建索引的情况
  1。对数据表查询时很少引用到的、大量重复的字段不应该创建索引。
  2。数据量非常小的数据表,索引能够改进其数据访问的效率十分有限,不必创建索引。
  3。对于一个基本表不应该建立过多的索引,数据表进行增删改时,索引也随之变化。索引需要占用文件目录和存储空间,而且需要维护,过多会使系统负担加重。四、什么情况下会导致索引失效?
  1。组合索引最左前缀原则:在使用组合索引的列作为条件时,必须要出现最左侧列为条件,否则索引不生效
  2。如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
  3。like查询以开头,例如张三、张三
  4。字符串类型的字段,传入了int类型的参数时索引会失效,而int类型的字段传入字符串类型不会失效。
  例如手机号码是字符串类型,传入了13057900876也就是int类型的变量,就会导致索引失效。
  根据mysql官网上解释,字符串’1’、’1、1a’都能转换成int类型的1,也就是说可能会出现多个字符串对应一个int类型参数的情况,那么mysql怎么知道该把int类型的1转换成哪种字符串,用哪个索引快速查值?所以索引会失效。五、为什么使用模糊匹配会使索引失效
  索引其实就是排序,或者说排队更直观。
  like‘张三’,实际你要找的是’张三XXX’,只要把所有’张三’开头的那部分内容返回即可,这部分是连续的,不需要全表扫描。
  like‘张三’,实际你要找的是’XXX张三’,这部分在索引里是不连续的,如果要返回需要的结果,只能全表扫描。六、回表查询和索引覆盖是什么
  InnoDB聚集索引的叶子节点存储行记录,因此,InnoDB必须要有,且只有一个聚集索引:如果表定义了主键(一般ID自增),则主键就是聚集索引;
  InnoDB普通索引的叶子节点存储主键值。
  回表查询:根据普通索引的叶子节点上的主键值,重新定位主键索引树上的行记录。
  例如:你给学生的学号加了唯一索引,但你现在执行这条sql:selectname,snofromstudentwheresno123;因为name字段在学号索引树上不存在,需要拿着学号索引树上的主键值去主键索引树中找姓名,这就是一次回表查询。
  索引覆盖就是个SQL在执行时,可以利用索引来快速查找,并且此SQL所要查询的字段在当前索引对
  应的字段中都包含了,那么就表示此SQL走完索引后不用回表了,所需要的字段都在当前索引的叶节
  点上存在,可以直接作为结果返回了。七、联合索引的好处是什么
  减少索引建立的开销。建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引,因为每多一个索引,都会增加写操作的开销和磁盘空间的开销。对于大量数据的表,这可是不小的开销!
  索引覆盖。同样的有复合索引(a,b,c),如果有如下的selecta,b,cfromtablewherea1andb1,那么MySQL可以直接通过遍历索引取得数据,而无需回表。在真正的实际应用中,索引覆盖是主要的提升性能的优化手段之一
  减少扫描行数。有1000W条数据的表,有如下selectfromtablewherea1andb2andc3,假设假设每个条件可以筛选出10的数据,如果只有单值索引,那么通过该索引能筛选出1000W10100w条数据,然后再回表从100w条数据中找到符合b2andc3的数据;如果是复合索引,可以通过索引筛选出1000w1010101w,然后再回表。八、MySQL怎么判断走索引还是全表扫描
  我们在查询有索引的字段时,有时候会发现居然没有走索引,而是走了全表扫描,因为MySQL发现走全表扫描会比走索引更快,因此选择了全表扫描。
  例如你走了联合索引,找到七条符合条件的记录,然后要进行七次回表查询,mysql认为与其你先走了索引然后进行许多次的回表查询,不如直接全表扫描快,于是就虽然你用了索引但是还是全表扫描了。
  小结:mysql会进行成本计算,用了索引的成本是多少,全表扫描的成本是多少,如果用了索引但是回表太多就去全表扫描九、Explain语句结果中各个字段分别表示什么
  比较重要的几个字段:
  1。possiblekeys:代表可能用到的索引
  2。key:实际上使用的索引
  3。keylen:实际使用索引的长度
  4。type所显示的是查询使用了哪种类型,type包含的类型包括如下图所示的几种:
  从最好到最差依次是:
  systemconsteqrefrefrangeindexall
  1。system:表只有一行记录(等于系统表),这是const类型的特列,平时不会出现,这个也可以忽略不计
  2。const:单表中最多只有一个匹配行(主键或唯一索引),在优化阶段即可读到数据
  3。eqref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
  4。ref:普通索引
  5。range:范围查询,一般就是在你的where语句中出现between、、、in等的查询,
  6。index:遍历索引树。这通常比ALL快,但是也没好到哪里去。
  7。all:全表扫描,最差的情况下systemconsteqrefrefrangeindexall
  1。system:表只有一行记录(等于系统表),这是const类型的特列,平时不会出现,这个也可以忽略不计
  2。const:单表中最多只有一个匹配行(主键或唯一索引),在优化阶段即可读到数据
  3。eqref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
  4。ref:普通索引
  5。range:范围查询,一般就是在你的where语句中出现between、、、in等的查询,
  6。index:遍历索引树。这通常比ALL快,但是也没好到哪里去。
  7。all:全表扫描,最差的情况下十、Mysql慢查询该如何优化?检查是否走了索引,如果没有则优化SQL利用索引。检查所利用的索引,是否是最优索引。检查所查字段是否都是必须的,是否查询了过多字段,查出了多余数据。检查表中数据是否过多,是否应该进行分库分表了。检查数据库实例所在机器的性能配置,是否太低,是否可以适当增加资源。十一、左匹配,右匹配,innerjoin说一下区别
  区别:
  1。left以leftjoin左侧的表为主表,左表中的记录都会出现在查询结果中,如果右表没有相匹配的记录,则以null填充。
  2。right以rightjoin右侧表为主表,记录都会出现在查询结果中,如果左表没有相匹配的记录,则以null填充。
  3。innerjoin查找的数据是左右两张表共有的
  什么是小表驱动大表?
  小表驱动大表指的是用小的数据集驱动大得数据集。
  1。当使用leftjoin时,左表是驱动表,右表是被驱动表;
  2。当使用rightjoin时,右表时驱动表,左表是被驱动表;
  3。当使用innerjoin时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表;
  例如:现有两个表A与B,表A有200条数据,表B有20万条数据:小表驱动大表
  for(200条){
  for(20万条){
  }
  大表驱动小表
  for(20万){
  for(200条){
  }
  总结:
  1。如果小的循环在外层,对于表连接来说就只连接200次;
  2。如果大的循环在外层,则需要进行20万次表连接,从而浪费资源,增加消耗;
  综上:
  小表驱动大表的主要目的是通过减少表连接创建的次数,加快查询速度。十二、你对使用外键怎么看?
  使用外键的原因
  1。外键保证数据的完整性和一致性,不会得到孤立行。
  2。可以获得良好的级联删除,级联更新行为,自动清理表
  3。将数据完整性判断托付给了数据库完成,减少了程序的代码量
  4。外键提供了一个非常重要的提示,说明在数据库中收集哪些统计信息最重要。
  不使用外键的原因
  1。数据库需要维护外键的内部管理。
  2。外键等于把数据的一致性事务实现,全部交给数据库服务器完成,使数据库在每个CRUD操作上都额外工作,因为它必须检查外键一致性,这要消耗不少资源,如果进行大批量更新,这更是非常痛苦。
  3。通过强制关系,外键指定了您必须添加删除内容的顺序,例如如果学生关联了订单,必须先删除订单数据,在删除学生数据。
  4。外键还会因为需要请求对其他表内部加锁而容易出现死锁情况。
  例如:外键约束带来的开销还包括锁开销,比如向子表中添加一条数据,外键约束会让innodb检查对应的父表。这里会需要对父表进行加锁操作,来确保这条记录不会在事务完成之前被删除。这就带来了额外的锁开销。甚至死锁。十三、说一下脏读、不可重复读以及幻读是什么
  1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据。
  2、不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
  3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
  小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
  注意:在innodb存储引擎下,引入mvvc之后已近解决了幻读问题。十四、说说select这个查询语句,在mysql查询的过程
  mysql分为server层与存储引擎层,server层包含连接器、分析器、优化器、执行器。
  接下来以一条sql查询语句执行过程介绍各个部分功能。客户端执行一条sql:
  1、连接器:连接到数据库,身份验证,权限管理
  2、分析器:执行之前,MySQL肯定需要知道你要做啥,先进行词法分析,把关键字识别出来,再进行语法分析,看你的SQL语句语法是否有错。
  3、优化器:通过分析器,我们知道了SQL需要做什么,但是直接根据SQL去获得结果可能会消耗很大性能,因此还得需要经过优化器对其进行优化。生成执行计划、选择索引等操作,选取最优执行方案
  4、执行器,打开表调用存储引擎接口,逐行判断是否满足查询条件,满足放到结果集,最终返回给客户端;若用到索引,筛选行也会根据索引筛选。十五、说说redolog和undolog日志的过程
  redolog作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redolog进行重做,从而达到事务的持久性这一特性。
  内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redolog是顺序写入redologfile的物理文件中去的。什么时候产生:事务开始之后就产生redolog,redolog的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redolog文件中。
  undolog作用:如果因为某些原因导致事务失败或回滚了,可以借助该undo进行回滚。
  内容:可以认为当delete一条记录时,undolog中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。当执行rollback时,就可以从undolog中的逻辑记录读取到相应的内容并进行回滚。总结
  作为JAVA开发程序员,与数据库打交道是必不可少的。MySQL作为当下热门的一款数据库,被广泛的应用到了企业实际开发中,同时在面试中也占了很大的比重,一定要熟练掌握。
  原文链接:https:blog。csdn。netqq52173163articledetails126960302

人到中年,如何才能混的好?1不要和异性搞暧昧,大忌!2人到中年要多注意父母的健康,老人健康,家庭压力减少一大半!3不要轻易用信用卡,花呗!会有依赖!4别和离婚的异性走得太近,要保持一定的距离。即使同情,也要一个无儿无女的亲戚得了癌症想借十万,可又没偿还能力,借不借?如果你确实有钱,就当做行善积德了!如果自己也很普通,就不要借,每个人要认命,不能把自己的利益建立在别人的痛苦之上如果你经济条件好,当然借,如果觉得十万太多,借两三万也无妨,还是觉得三农专家孔祥智表示农民朋友不种地未尝不是好事,那中国农民未来如何发展?自中华人民共和国成立以前,历朝历代最苦的就是农民。中华人民共和国成立之时毛主席向全世界宣布了中华人民共和国成立了,中国人民从此站起来了。自那日起农逐渐不再为穿衣吃饭发愁。改革开放以一觉醒来女航天员王亚平又多了一个身份,三次太空授课的她有多牛?神舟十三号刚刚回家,我们的三名英雄航天员还在进行体能恢复中,众多航天迷还沉浸在飞船返回舱成功垂直着陆的喜悦中,航天英雄王亚平就又传来了喜讯。航天英雄王亚平不负所望,在近期又多了一个现在农村老龄化空心化,三农的出路在哪?现在农村老龄化,空心化。是不真的事实,但是你们有没有发现,在农村也很少有荒芜化的土地了。虽然有老龄化的老年人也多,空心化的村也多,但是这些村里的土地并没有荒芜荒废,因为这些土地大部下岗职工退休,档案中没有解除劳动关系证明怎么办?一首先,如果不是有特殊情况,下岗职工档案里是必须有解除劳动关系证明的。因为下岗职工解除劳动关系证明,是一试三份的。一份由公证处留存,一份由单位交由市档案馆备案,最后一份是交给职工个沈阳的房价会怎样?我是一个土生土长的沈阳人。沈阳的房价呢,在一线城市里,算很低的。因为整个辽宁省的GDP在全国是倒数第二(以前是倒数第一)。首先说一下铁西,好一些的品牌房子,好一些比如金地,万科这种为什么四川省成都市与省内其他地市州经济发展差距那么大?谢邀。为什么四川省成都市与省内其他地市州经济发展差距那么大?先说答案这是由四川的客观发展条件和四川工业的发展历史造成的结果。先说四川的客观发展条件。我们其实知道,成都没做大之前,大社保怎样通过银行发养老金?感谢邀请,更感谢楼主的提问。楼主你好,社保怎样通过银行来发放养老金呢?我们都知道,我们如果要办理退休享受养老金的待遇,那么最重要的一个条件就是要正常的办理一张社保卡或者是社保部门指在临沂市中心买房好还是到青岛西海岸新区买房好?青岛西海岸新区和临沂对比哪里买房好的问题,我从两方面回答一是看你的工作在哪里以及你们家庭或你的孩子落地在哪,决定你在哪买房二是你是投资还是刚需买房,如是投资青岛西海岸新区肯定高于临天津大学和厦门大学,都是全国知名大学,哪一所大学更厉害一些呢?厦门大学与天津大学,一南一北两所全国知名重点高等学府,对于很多学子而言,考入其中任何一所都是比较牛的,选择到自己最喜欢的专业,就选择到了厉害的大学。两所学校都是211,985,双一
Batch大小不一定是2的n次幂!ML资深学者最新结论羿阁编译整理量子位公众号QbitAIBatch大小不一定是2的n次幂?是否选择2的n次幂在运行速度上竟然也相差无几?有没有感觉常识被颠覆?这是威斯康星大学麦迪逊分校助理教授SebaOPPO也有性价比,天玑芯片LCD护眼屏64MP三摄,仅899元在很多人的印象中,OPPO没有性价比,毕竟它早期是线下定位,各方面的成本,以及对利润的追求,也是比较坑爹的,因此只有颜值党会喜欢,如果是预算不多,又想要好的配置,那OPPO好几几乎增设C份额降低管理费免收赎回费,基金公司再使旧招揽客撰文财经天下周刊周梦婷编辑田晏林(图源视觉中国)市场行情低迷时,基金公司又开始靠着旧招揽客吸金了。财经天下周刊注意到,近期受A股市场震荡影响,一些基金公司动作频频,不仅多只基金产品上半年啤酒行业量价齐升相关上市公司业绩普增证券时报记者黄翔日前,青岛啤酒重庆啤酒燕京啤酒珠江啤酒等多家啤酒上市公司陆续披露半年报,从各家数据来看,今年上半年啤酒行业量价齐升,成本得到改善,相关公司业绩增长。8月26日,啤酒8月27日晚间11家公司发布重大利空消息,2公司出现股东减持超6一影响公司的利空消息道森股份出售控股子公司江苏隆盛70股权康希诺上半年经营亏损1。65亿元去年同期盈利超8亿恒星科技有机硅项目目前仍处于试运行阶段中恒集团上半年净利润降69至1。0美媒我们可能永远不知道互联网对我们隐藏了多少事实来源环球时报美国纽约时报8月25日文章,原题我们可能永远不知道互联网对我们隐藏了多少事实互联网汇集了有史以来最全面的人类知识,但它的庞大规模是优势还是漏洞?它的规模是否破坏它作为信12G512G来到两千档,高端150W快充旗舰放松,机会到了从存储的角度来说,两三千的机型一般不会搭载512G版本,最常见的只会搭载256G,原因也很明显,因为两三千的价位在利润上不是那么大,所以手机厂商们都觉得用不着512G大内存来浪费!4800万45W,iPhone14ProMax真的超勇尽管全面屏手机有了前所未有的发展,但是刘海全面屏和挖孔全面屏设计依然是市场的主流,因此实现更极致的全面屏设计,手机厂商们依然要付出诸多的努力。大家都知道,苹果手机是高端手机市场的霸华为P60Pro概念机曝光,比14更值得期待说实话,要是华为的5G芯片代工不受阻,华为手机的全球销量,应该早已经超越三星和iPhone,成为真正的世界第一了。不过俗话说得好,瘦死了的骆驼比马大,华为手机业务如今虽然发展受阻,华为mate40pro夹缝生存华为mate50系列马上发布了时隔两年大家都快忘记了华为mate系列据说今年价格以及配货都大大改善那么两年前的mate40系列是怎样的一个产品先对比一下上一代内部设计屏幕部分参数屏正面刚华为纯国产电脑曝光你会支持吗首先纯国产电脑意味着硬件软件均为国产看到这个估计很多人觉得不可思议,因为最近我国芯片被制裁的阴影可谓是深入人心。但华为并没有向制裁妥协,而且在各个领域持续发力。并没有被打压垮掉的样
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网