Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day28】—— 数据库5

举报
_陈哈哈 发表于 2022/01/22 00:53:51 2022/01/22
【摘要】   大家好,我是陈哈哈,北漂五年。相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一...

  大家好,我是陈哈哈,北漂五年。相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍热门面试题及恰如其分的解答。

  一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!想起高三时一个同学的座右铭:只有沉下去,才能浮上来。共勉(juan)。

在这里插入图片描述
烟花台风来之前的上海,江浙沪各地的老铁们,保重!

作者:對你何止一句钟意



  本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识集合容器并发编程JVMSpring全家桶MyBatis等ORMapping框架MySQL数据库Redis缓存RabbitMQ消息队列Linux操作技巧等。

面试题1:说一下你对聚集索引与非聚集索引的理解,以及他们的区别?

首先解释一下,什么是聚集索引和非聚集索引。这里我想起网上看到的一个典型的例子:

说索引像一个汉语字典,聚集索引是根据拼音查询,而非聚集索引是根据偏旁部首查询,你想想哪个查的快?

  汉语字典的正文本身就是一个聚集索引。比如,我们要查“啊”字,拼音是“a”,按照拼音排序是以“a”开头“z”结尾的,那么“啊”字就自然地排在字典的前部。如果翻完了所有以“a”开头的内容仍然找不到这个字,那么就说明字典中就没有这个字。我们知道,其实字典的正文部分本身就是一个目录,不需要再去查其他目录来找到我们需要找的内容。我们把这种正文内容本身就按照一定规则排列(有序)的目录称为“聚集索引”。

在这里插入图片描述

  问题来了,遇到不认识的字,不知道它的发音,怎么办?

  这时候,就得用“偏旁部首”查了吧,然后根据这个偏旁后的页码来找字。这种结合“部首目录”和“检字表”查到的字的排序并不是真正的正文的排序方法,比如查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。

  我们可以通过这种方式来找到我们所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到相应页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式(无序)称为“非聚集索引”。

在这里插入图片描述

1、聚集索引

  聚集索引是我们常用的一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序,我们叶子结点直接对应的实际数据,当索引值唯一(unique)时,使用聚集索引查找特定的行效率很高。例如,使用唯一店员 ID 列 emp_id 查找特定雇员的最快速的方法,是在 emp_id 列上创建聚集索引或 PRIMARY KEY 约束。可见,自增主键就是一个标准的聚集索引

  当某列满足两个条件时,我们可以创建聚集索引:

  • 数据存储有序(如自增)
  • key值应当唯一

  聚簇索引像字典,字典按字母顺序排列数据,有序。在聚集索引中,索引包含指向数据存储的块而不是数据存储地址的指针,和非聚集索引(Normal)相反。

在这里插入图片描述

2、非聚集索引

  非聚集索引就是索引类型为Normal的普通索引啦,我们在《聊聊MySQL索引“B+Tree”的前世今生》这篇文章中提到,B+Tree(这里是索引类型是Normal)所有关键字存储在叶子节点,但不存储真正的data,叶子结点存的是一个指向磁盘data的指针,需要到磁盘数据页中取。

  非聚集索引的数据存储在一个位置,索引存储在另一位置。由于数据和非聚集索引是分开存储的,因此在一个表中可以有多个非聚集索引。

聚集索引 和 非聚集索引的区别:

  1. 单表中只能有一个聚集索引,而非聚集索引单表可以存在多个。
  2. 聚集索引,索引中键值的逻辑顺序决定了表中相应行的物理顺序;非聚集索引,索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同
  3. 索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点

文章来源: chensj.blog.csdn.net,作者:_陈哈哈,版权归原作者所有,如需转载,请联系作者。

原文链接:chensj.blog.csdn.net/article/details/119112228

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。