Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >准备跳槽!答对这题offer稳一半,什么是聚集索引和非聚集索引

准备跳槽!答对这题offer稳一半,什么是聚集索引和非聚集索引

作者头像
Tom弹架构
发布于 2022-09-22 03:29:32
发布于 2022-09-22 03:29:32
4410
举报
文章被收录于专栏:Tom弹架构Tom弹架构

一位去阿里面试的小伙伴,在第一面就挂了。他跟我说是被数据库里面的几个问题难倒了,他说面试官问了事务隔离级别、MVCC、聚集索引/非聚集索引、B 树、B+树这些,都没回答好。

大厂面试基本上是这样,由点到面去展开,如果你对这个技术理解不够全面,很容易就会被看出来。关于事务隔离级别、MVCC、B树、B+树在往期视频中我都有讲解过。那今天,我给大家来聊一聊聚集索引和非聚集索引。

另外,我花了很长时间,准备了一份500页的PDF面试资料文档和一份10W字的Java总结面试题和答案,

简单来说,聚集索引就是基于主键创建的索引,除了主键索引以外的其他索引,称为非聚集索引,也叫做二级索引。

由于在 InnoDB 引擎里面,一张表的数据对应的物理文件本身就是按照 B+树来组织的一种索引结构,而聚集索引就是按照每张表的主键来构建一颗 B+树,然后叶子节点里面存储了这个表的每一行数据记录。所以基于 InnoDB 这样的特性,聚集索引并不仅仅是一种索引类型,还代表着一种数据的存储方式。

ENTER TITLE

同时也意味着每个表里面必须要有一个主键,如果没有主键,InnoDB 会默认选择或者添加一个隐藏列作为主键索引来存储这个表的数据行。一般情况是建议使用自增 ID 作为主键,这样的话 ID 本身具有连续性,使得对应的数据也会按照顺序存储在磁盘上,写入性能和检索性能都很高。否则,如果使用 UUID 这种随机 ID,那么在频繁插入数据的时候,就会导致随机磁盘 IO,从而导致性能较低。需要注意的是,InnoDB 里面只能存在一个聚集索引,原因很简单,如果存在多个聚集索引,那么意味着这个表里面的数据存在多个副本,造成磁盘空间的浪费,以及数据维护的困难。

由于在 InnoDB 里面,主键索引表示的是一种数据存储结构,所以如果是基于非聚集索引来查询一条完整的记录,最终还是需要访问主键索引来检索。

这个问题要回答好,还真不容易。涉及到 MySQL里面索引的实现原理。但是如果回答好了,就能够很好的反馈求职者的技术功底,那通过面试就比较容易了。

最后,我把之前分享的资料全部整理成了文字,希望能够以此来提高各位粉丝的通过率。

我是被编程耽误的文艺Tom,只弹干货不掺水!你们的支持就是我最大的动力!关注我,面试不再难!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom弹架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL面试题(最全、超详细)——定位慢查询、聚簇索引、覆盖索引、深分页优化、sql优化、并发事务问题、隔离级别、undo log与redo log、主从同步
查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:
寻求出路的程序媛
2024/06/25
1.1K0
MySQL面试题(最全、超详细)——定位慢查询、聚簇索引、覆盖索引、深分页优化、sql优化、并发事务问题、隔离级别、undo log与redo log、主从同步
快问快答,MySQL面试夺命20问
给面试官讲一下 MySQL 的逻辑架构,有白板可以把下面的图画一下,图片来源于网络。
敖丙
2021/07/27
9910
快问快答,MySQL面试夺命20问
面试官:MySQL索引底层数据结构原理与性能调优,你能回答多少?「建议收藏」
作为一名Java程序员,MySQL底层的一些原理是我们不必学会就可以搬砖工作的一种技能点,但是小奇为什么还要讲一下呢?难道就是为了浪费大家1分钟的宝贵时间,一个人1分钟,50万人就是1年,5000万人就是100年,赚了,小奇以一己之力成功搞挂一个人(血赚)。
全栈程序员站长
2022/09/12
5750
面试官:MySQL索引底层数据结构原理与性能调优,你能回答多少?「建议收藏」
MySQL灵魂拷问:36题带你面试通关!
事务特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
程序员大彬
2021/10/17
5360
MySQL灵魂拷问:36题带你面试通关!
mysql 面试总结
mysql 建立联合索引后,是按最左匹配原则来筛选记录的,即检索数据是从联合索引的第一个字段来筛选的。如果 where 里的条件只有第二个字段,那么将无法应用到索引。
lincoln
2022/02/09
5090
mysql 面试总结
MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。
帅地
2020/06/03
2.7K1
MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
数据库两大神器【索引和锁】
所以说,如果我们写select * from user where username = 'Java3y'这样没有进行任何优化的sql语句,默认会这样做:
Java3y
2018/07/30
1.7K1
数据库两大神器【索引和锁】
大厂面试系列(八):数据库mysql相关
数据库相关 mysql索引的数据结构,加索引的原则 InnoDB和myiasm的区别,以及常见的mysql优化方案 sql查询优化 说说Mysql的sql优化 mysql的索引,b+树索引是否支持范围查询,联合索引的失效情况 开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。 数据库索引原理 mysql索引 B+树原理 mysql索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里?哪些情况下建索引?解释下最左匹配原则?现在一个表有三列a
zhaozhen
2021/07/15
1.1K0
一篇文章带你读懂 MySQL 和 InnoDB
原文地址 | http://draveness.me/mysql-innodb.html
数据和云
2018/07/27
7360
一篇文章带你读懂 MySQL 和 InnoDB
MySQL 聚集索引(InnoDB)和 非聚集索引(MyISAM) 精讲~两张图彻底搞懂
答案见B站视频:https://www.bilibili.com/video/BV1je4y117yP
AI码师
2022/12/22
5960
MySQL 聚集索引(InnoDB)和 非聚集索引(MyISAM) 精讲~两张图彻底搞懂
深入理解四种数据库索引类型(- 唯一索引/非唯一索引 - 主键索引(主索引) - 聚集索引/非聚集索引 - 组合索引)唯一索引/非唯一索引主键索引(主索引)聚集索引/非聚集索引5.组合索引(联合索引)
1.唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复。
desperate633
2018/08/22
11.4K0
【数据库】
【数据库】MySql性能监控 如何定位并优化慢查询Sql? 具体场景具体分析,只提出大致思路。
瑞新
2020/07/07
6370
【数据库】
MySql 三大知识点——索引、锁、事务
索引的优点:1. 天生排序。2. 快速查找。 索引的缺点:1. 占用空间。2. 降低更新表的速度。
Bug开发工程师
2019/05/05
8950
MySql 三大知识点——索引、锁、事务
MySql数据库索引原理
第二部分结合MySQL数据库中InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。
哲洛不闹
2018/09/14
2.1K0
MySql数据库索引原理
Are You OK?主键、聚集索引、辅助索引
首先公布结论:对于 InnoDB 存储引擎来说,每张表都一定有个主键(Primary Key)!
飞天小牛肉
2022/02/23
8390
Are You OK?主键、聚集索引、辅助索引
数据库中的面试题你能接几招
InnoDB采用MVCC来支持高并发,并且实现了4个标准的隔离级别。其默认的隔离级别是可重复读。当隔离级别是可重复读的时候,是会发生幻读的问题的。那么MySQL如何解决这个问题呢?
一缕82年的清风
2021/12/06
4890
数据库中的面试题你能接几招
一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM
聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,数据库
Java架构师必看
2020/04/16
4.7K0
数据库面试题汇总
1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。
用户4283147
2022/10/27
5640
数据库面试题汇总
innodb存储引擎原理
存储引擎位于文件系统(各种数据,二进制形式)之上,各种管理工具(连接池、语义分析器、优化器、缓存区、SQL接口)之下。
mariolu
2019/05/27
2.6K0
不懂就问,MySQL索引是啥?
索引是帮助数据库高效获取数据的一种数据结构,是基于数据表创建的,它包含了一个表中某些列的值以及记录对应的地址,并且把这些值存在一个数据结构中,常见的有使用哈希表、B+树作为索引。
唔仄lo咚锵
2022/05/08
1.3K0
不懂就问,MySQL索引是啥?
推荐阅读
相关推荐
MySQL面试题(最全、超详细)——定位慢查询、聚簇索引、覆盖索引、深分页优化、sql优化、并发事务问题、隔离级别、undo log与redo log、主从同步
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档