mysql索引相关面试题

MySQL - 全文索引 配置文件my.ini(Windows10默认路径C\ProgramData\MySQL\MySQLServer8.0)中增加如下配置项,同时。在上述语句中,关键字CREATEFULLTEXTINDEX表示用来创建全文索引。 阅读详情

1. mysql常用的存储引擎有哪些?

(1) MyISAM:

   它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表
   
(2) InnoDB:

  InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

2. mysql索引存储方式有哪些?

(1) B树、B+树索引

 

非叶子节点只不存储真实的数据,只存储指引搜索方向的数据项,如36、79并不真实存在于数据表中。

如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中确定29在28的后面,锁定磁盘块1的P2指针,
内存时间因为非常短(相比磁盘的IO)可以忽略不计,通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次IO,29
小于36,锁定磁盘块3的P1指针,通过指针加载磁盘块7到内存,发生第三次IO,同时内存中做二分查找找到29,结束查询,总计三次IO。
真实的情况是,3层的b+树可以表示上百万的数据,如果上百万的数据查找只需要三次IO,性能提高将是巨大的,如果没有索引,每个数据
项都要发生一次IO,那么总共需要百万次的IO,显然成本非常非常高。

(2) 哈希索引
HASH 索引不是基于树形的数据结构查找数据,而是根据索引列对应的哈希值的方法获取表的记录行。哈希索引的最大特点是访问速度快,但也存在下面的一些缺点:
MySQL 需要读取表中索引列的值来参与散列计算,散列计算是一个比较耗时的操作。也就是说,相对于 B-树索引来说,建立哈希索引会耗费更多的时间。
不能使用 HASH 索引排序。
HASH 索引只支持等值比较,如“=”“IN()”或“<=>”。
HASH 索引不支持键的部分匹配,因为在计算 HASH 值的时候是通过整个索引值来计算的

3.为什么MYSQL要用B+ 树而不用B树

首先B树的所有节点都存储数据信息,而B+ 树的所有数据都存储在叶子节点
B+ 树是在B树的基础上的一种优化,使其更加适合外存储索引结构,InnoDB存储引擎及时B+ 树实现其索引结构
从B树结构图中可以看到每个节点中不仅包含数据的Key值,还有data值,而每一页的存储空间是有限的,如果data数据较大时会导致每一个节点(也就是每一页)能存储的key的数量很小,当存储的数据量很大时同时会导致B树的深度很深,高度很高,增大磁盘的IO次数,进而影响查询效率,在B+树中,所有数据节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储Key值信息,这样可以大大增加每个节点存储的key值数量,降低B+树的高度

4.mysql索引类型有哪些?

(1) 普通索引
普通索引是 MySQL 中最基本的索引类型,它没有任何限制,唯一任务就是加快系统对数据的访问速度。
普通索引允许在定义索引的列中插入重复值和空值。
​
创建普通索引时,通常使用的关键字是 INDEX 或 KEY。
例 1
下面在 tb_student 表中的 id 字段上建立名为 index_id 的索引。
CREATE INDEX index_id ON tb_student(id);
​
(2) 唯一索引
唯一索引与普通索引类似,不同的是创建唯一性索引的目的不是为了提高访问速度,而是为了避免数据出现重复。
唯一索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。
​
创建唯一索引通常使用 UNIQUE 关键字。
例 2
下面在 tb_student 表中的 id 字段上建立名为 index_id 的索引,SQL 语句如下:
CREATE UNIQUE INDEX index_id ON tb_student(id);
​
(3) 主键索引
顾名思义,主键索引就是专门为主键字段创建的索引,也属于索引的一种。
主键索引是一种特殊的唯一索引,不允许值重复或者值为空。
创建主键索引通常使用 PRIMARY KEY 关键字。不能使用 CREATE INDEX 语句创建主键索引。
​
(4) 全文索引
全文索引主要用来查找文本中的关键字,只能在 CHAR、VARCHAR 或 TEXT 类型的列上创建。在 MySQL 中只有 MyISAM 存储引擎支持全文索引。
全文索引允许在索引列中插入重复值和空值。
不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。
​
创建全文索引使用 FULLTEXT 关键字。
例 4
在 tb_student 表中的 info 字段上建立名为 index_info 的全文索引,SQL 语句如下:
CREATE FULLTEXT INDEX index_info ON tb_student(info);
​
其中,index_info 的存储引擎必须是 MyISAM,info 字段必须是 CHAR、VARCHAR 和 TEXT 等类型。

5.explain

expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
​
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明

​
type:对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。
ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
​
ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
​
index: Full Index Scan,index与ALL区别为index类型只遍历索引树
​
range:只检索给定范围的行,使用一个索引来选择行
​
ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
​
const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system
​
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

 

 

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证? 本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。 阅读详情

相关推荐

5分钟搞定!用L型匹配电路优化窄带天线性能(附Smith圆图实操)

本文针对窄带天线阻抗匹配难题,提供了一套5分钟快速解决方案。通过详解L型匹配电路的核心原理,并结合Smith圆图这一射频工程师的“瑞士军刀”,手把手指导如何选择拓扑、计算元件值并进行实际调试,旨在帮助硬件工程师高效优化天线性能,实现最大功率传输。

yyy34的博客 447

MySQL 索引

在MySQL顺序访问和索引访问在 MySQL 中默认使用的数据库引擎是innoDB,存储结构是B+Tree如果查询的列,通过索引项的信息可直接返回,则该索引称为查询SQL的覆盖索引。覆盖索引可以提高查询的效率。例如:通过name进行数据查询需要需要在name索引中找到name对应的id,然后通过获取的id在主键索引中查到对应的行。整个过程需要扫描两次索引,一次name,一次id如果我们查询只想查询id的值,就可以改写SQL为因为只需要id的值,通过name查询的时候,扫描完name索引,我们就能够获得。

weixin_62587914的博客 1516

2026年信创系统技术应用专业人才培养基地建设方案(高职、信创新专业、人才培养、专业代码:510221)

响应国家信创产业战略及教育部新增“信创系统技术应用”专业(代码510221)的部署,联合麒麟软件、华为鸿蒙等领军企业,建设高水平信创人才培养基地。方案基于国家政策导向(如2027年央企全面国产化替代目标)和行业人才缺口(2025年缺口超80万人),提出以“产教融合、创新驱动”为核心,构建集教学、实训、认证于一体的综合性培养体系。 建设内容涵盖五大方向: 专业规划:分三阶段(2025-2030年)推进专业申报、课程开发与区域辐射,最终建成区域性信创技术创新平台。 课程体系:围绕运维、云计算、数据库、适配

啊碧根果的博客 1601

表索引——全文索引

mysql全文索引详解

m0_65635427的博客 1536

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1518

倾斜摄影与激光点云融合建模:Photoscan+ContextCapture避坑指南

本文详细解析了倾斜摄影与激光点云融合建模的技术流程,重点介绍了使用Agisoft Metashape(原Photoscan)与ContextCapture进行数据融合的实战指南。文章深入探讨了数据预处理、坐标系统一、空三计算策略及在ContextCapture中进行点云配准等关键步骤,旨在帮助从业者规避常见陷阱,高效构建兼具高精度几何与真实纹理的三维实景模型。

weixin_29062613的博客 250

MySQL面试题-索引篇

MySQL索引相关面试题,B+树,聚簇索引和非聚簇索引,页分裂,索引下推等常见问题

qq_33129875的博客 4769

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

weixin_37584728的博客 2278

MySQL面试题--最全面-索引

自适应哈希索引是Innodb引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree所有之上再创建一个哈希索引,这就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希查找。这是一个完全自动的内部行为,用户无法控制或配置。使用命令:查看INSERT BUFFER AND ADAPTIVE HASH INDEX;多叉树(multiway tree)允许每个节点可以有更多的数据项和更多的子节点。2-3树,2-3-4树就是多叉树,多叉树通过。

Timebro的博客 3766

使用cmd命令查看电脑是不是翻新机 如何查看自己电脑是不是翻新机

最近pdd啥的百亿补贴啊,什么品牌店啊,很多“假一赔十”,绝对“正品”都蹦出来了,很多人拿到以后,也上网查了各种鉴别方式,包括区分是不是翻新机之类的。本人亲自踩坑“pdd品牌店”,“假一赔十”,“绝对正品”等店铺,跟大家分享一下我得鉴别经验(说道分享鉴别经验了,大家也就不用好奇了,我肯定是买到翻新机了,mmp)。 第一步:准备好手机,开始录屏,没有完整的拆箱视频,可能不容易退货退款 第二步:拆箱,查看屏幕划痕(用手机闪光灯看,要不然看不清),然后查看屏幕有没有被擦过的痕迹 第三步:查看USB孔等插口有没有划

weixin_39417324的博客 1万+

EndNote X9 参考文献附录列表 格式调整

EndNote X9 插入参考文献常见问题总结

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2571

MySQL索引分析以及相关面试题

可以在我的个人博客阅读文章,排版会美观一些:文章地址 1. 什么是索引 一种能帮助mysql提高查询效率的数据结构:索引数据结构 索引优点: 大大提高数据查询速度 索引缺点: 维护索引需要耗费数据库资源 索引要占用磁盘空间 当对表的数据进行增删改的时候,因为要维护索引,所以速度收到影响 结合索引的优缺点,得出结论:数据库表并不是索引加的越多越好,而是仅为那些常用的搜索字段建立索引效果才是最佳的! 2. 索引的分类 主键索引:PRIMARY KEY 设定为逐渐后,数据库自动建立索引,i.

兴趣使然的草帽路飞 2万+

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据

背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。

boss-dog 1331

MySQL索引相关面试题

相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。 因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于索引的知识。 但是,我还是图样图森破,直到我被阿里的面试官虐过之后我才知道,自己在索引方面的知识,只...

心神沫沫的收藏 557

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【每日一道面试题】MySQL索引相关面试题

qq_21744859的博客 184

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

一文整理14道MySQL索引相关面试题

精心整理14道MySQL索引相关面试题(珍藏版) 如果仅仅是死记硬背MySQL索引相关面试题一定是相当枯燥的,不容易记却容易忘,这里循序渐进的讲解有关索引有关知识点,让大家在理解的基础上记住一些面试常问的点。 什么是索引? 索引的优缺点? 什么情况下需要建索引? 什么情况下不需要建索引? 索引有哪几种分类? 索引的数据结构有哪些? Hash索引和B+树索引的区别? 为什么B+树比B树更适合实现数据库索引? 聚集索引相对于非聚集索引的区别? 什么是回表查询? 什么是覆盖索引? 什么是最左匹配原则? 索引失效

后端元宇宙 1万+

6.9 Mysql面试题 索引相关

页目录就是由多个槽组成的,槽相当于分组记录的索引。我们通过槽查找记录时,可以使用二分法快速定位要查询的记录在哪个槽(哪个记录分组),定位到槽后,再遍历槽内的所有记录,找到对应的记录。建立联合索引时,要把区分度大的字段排在前面,这样区分度大的字段越有可能被更多的 SQL 使用到。使用前缀索引是为了减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。在一些大字符串的字段作为索引时,使用前缀索引可以帮助我们减小索引项的大小。(a, b, c) a是全局有序的,bc是全局无序局部有序的。

weixin_54385104的博客 1254

mysql索引相关面试题,mysql索引优化面试题

曾经偷偷的面试了两个单位,都提到了Mysql的优化问题,因此之后要多多学习数据库的优化知识了。建设数据库的优化大概主要就是索引的优化了吧,由于咱们不可能修改数据结构的状况下,提升数据库的查询效率彷佛也只能用索引了。固然这也是创建在你sql语句写的比较科学的状况下,若是你的sql语句自己就写的比较垃圾,神仙也救不了你!下边是在网上找到的一些资料,保留下来备用吧1,建立索引对于查询占主要的应用来讲,索...

weixin_31068553的博客 283

java面试题-mysql索引相关问题

首先,从navicat创建索引的界面中 可以看到,索引的组成就是索引名称、对应的字段、索引类型、索引方法、注释众所周知,索引会使得查询速度变快,所以引出第一个问题。

qq_36178165的博客 1246

MySQL引擎和索引相关面试题

MySQL引擎是MySQL数据库系统中的模块,负责数据的存储、检索和管理。不同的存储引擎提供了不同的功能和特性。主键索引用于唯一标识表中的每一行数据,而唯一索引保证列中的值是唯一的。主键索引可以是一个特殊的唯一索引。聚集索引是物理上对表进行排序的索引,决定了表中数据的物理存储顺序。在InnoDB中,主键索引就是聚集索引。非聚集索引则是通过指向实际数据行的指针来组织和访问数据。查询优化器是MySQL中的一部分,负责分析查询语句并选择最佳的执行计划。

weixin_41545189的博客 455

MySQL索引相关面试题问答总结

索引在项目中是比较常见的,就像是我们书本的目录一样,它是一种帮助MySQL高效的查询数据的数据结构,主要作用就是提高数据检索的效率(想象一下通过目录查询章节),通过使用索引可以降低数据库查询的I/O成本,索引也可以对数据进行排序,适合范围查询,降低数据查询成本,从而降低CPU的消耗。好的~聚簇索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键在作为聚簇索引的。

weixin_45767204的博客 627

MySQL索引和约束分析及相关面试题

目录1. 什么是索引2. 索引的分类3. 索引的基本操作3.1 主键索引3.2 单列索引3.3 唯一索引3.4 多列索引4. MySQL底层数据结构(B+ Tree树)5. 聚簇索引和非聚簇索引6. 约束以及分类7. MySQL约束和索引的区别8. 面试题小结 文章学习与: b站编程不良人视频:视频链接 大佬文章:文章地址 1. 什么是索引 MySQL官方是这样说的:一种帮助MySQL提高查询效率的数据结构。 索引的优点: 大大提高查询效率 索引的缺点: 维护索引需要耗费数据库资源 会占用磁盘空间

qq_50313418的博客 916
上一篇: 定时任务python
下一篇: 基于gin框架搭建的一个简单的web服务
焦长豪的技术博客
博客等级 码龄5年 13粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值