MySQL(面试问题)

news/2024/9/28 23:04:02/
MySQL用了什么索引结构

B+ 树

B+树的优势

对比B树,B+树的数据放在叶子节点,非叶子节点存放索引,而B树中,行数据放在非叶子节点中。相比之下,B+一次读入的索引节点更多,减少IO次数,缩短查询时间。
对比二叉树,B+树的树高更低,树高代表了磁盘IO次数,更低的树所需要的IO次数更少。
对比Hash,hash不适合做范围查询,hash存在冲突问题。

什么是联合索引的最左匹配

多个字段建立联合索引时,会有一个顺序,例如 a、b、c 三个字段建立联合索引,如果我的查询条件是:where a = 1 and b = 1 and c = 1。这时查询会走联合索引,如果查询条件是:where b = 1 and c = 1。这时,查询条件不符合最左匹配原则,不会走联合索引。
也就是说,我们的查询条件要尽量符合联合索引的排列顺序a、b、c,避免索引失效。
主要因为,联合索引是先将a进行排序,再对b排序、再对c排序,这就导致a是全局有序的,b、c是局部有序的。

给了个sql a=1 and b>=2 and c=3判断哪几个字段走了索引

应该是a、b走了索引,c没走索引。(不确定)

什么时候用索引,索引失效场景

建立索引

  1. 如果对某一字段进行频繁查询时,可以建立索引。
  2. 被作为条件查询的字段
  3. 频繁需要排序的字段(索引已经排序,这样查询可以利用索引的排序,加快查询的速度)
  4. 被频繁用于连接的字段,提高多表查询效率

索引失效:

  1. 对索引使用函数,例如:length(id)
  2. 对索引进行运算,例如:ID - 1 = 10(这种看起来有点有病,后面版本的MySQL对这种情况进行了优化,不会导致索引失效)
  3. 隐式类型转换。当操作符左右两边的数据类型不一致时,会发生隐式类型转换。例如 num = ‘123’
  4. 使用联合索引时,没有符合最左匹配
  5. 使用索引时,使用了左注释,或者右注释,即:like %aa 或者 like %a%
  6. 查询条件中,使用了or,并且or的前后条件中,有一个列没有索引。
联合索引(id,price,states)selsect * from 商品表 where id = 1 and price > 2 and states = 1走哪些索引

走了id、price

OR操作符往往难以使用联合索引
where id = 1 and price > 2 or states = 1 不走索引

mysql_35">mysql锁有哪些
范围用途
全局锁整个数据库全库逻辑备份
表锁表的读写
元数据锁读锁:保证用户对表中数据进行增删改查时,其他线程对表结构进行更改。写锁:修改表的结构。
意向锁意向锁,其实什么也没锁,主要为了快速判断表里是有记录被加锁。
AUTO-INC锁自增锁,用于自增的字段。
记录锁行 / 记录分为:X(写锁)和 S(读锁)。对记录的读写
间隙锁范围锁,锁定一个范围,例如(3,5),那么其他事务就无法插入4这条记录。间隙锁之间是兼容的,即两个事物可以同时持有包含相同范围的间隙锁,因为间隙锁主要是为了解决可重复读隔离级别下的幻读现象。
临键锁是记录锁和间隙锁的结合,锁定一个范围,并锁定记录本身。例如临键锁(3,5],那么其他事务就无法插入4这条记录,也无法修改5这条记录。
插入意向锁表明事务想往某个范围内插入数据。
什么时候用记录锁,什么时候用表锁,(这里提示where语句条件下什么时候用)

这个问题暂时不会。。。。。。。。。。
全表扫描的时候用表锁
where语句没有使用索引,要进行全表扫描的时候用表锁??


http://www.ppmy.cn/news/1531374.html

相关文章

浙大数据结构:05-树9 Huffman Codes

这道题难度挺大,写起来较为费劲,这里我依然使用了STL库,使得代码量大幅减少不过百行,便于大家理解。 机翻: 1、条件准备 数组存储字符对应频率,n,student存储输入多少字符,有多少学生测试。 …

集群系统架构

ShedLock 是一个用于分布式环境下的锁机制,确保在同一时间点只有一个节点能够执行特定的定时任务。其核心原理是通过公共存储(如数据库、Redis 等)来实现锁的管理12。 具体来说,当一个任务在某个节点上开始执行时,该节…

node-red-L3-重启指定端口的 node-red

重启指定端口 目的步骤查找正在运行的Node.js服务的进程ID(PID):停止Node.js服务:启动Node.js服务: 目的 重启指定端口的 node-red 步骤 在Linux系统中,如果你想要重启一个正在运行的Node.js服务&#x…

cubemx配置ADC

参考博客:https://blog.csdn.net/qq_29031103/article/details/119894077 生成代码; 接着编写代码: 1)在main函数bsp初始化部分; 添加:HAL_ADCEx_Calibration_Start(&hadc1); 2)在…

《The Graceful Dance of Fog》

《The Graceful Dance of Fog》 Fog, like an ethereal white silk, quietly blankets the expanse of heaven and earth. It resembles a mysterious dancer, moving in silence and enshrouding the whole world in its dreamlike embrace. "The fog entwines aroun…

【CSS】背景

background-color 颜色background-image 图像background-size 缩放background-repeat 平铺background-position 定位background-clip 裁剪区域background-origin 开始区域background-attachment 滚动方式 background-color 颜色 <style>div{width: 200px;height: 100px;…

react通过下拉框选择多个,并展示在下方的方式

以备后用&#xff0c;直接上代码&#xff1a; 一、方法&#xff1a; //查询学校一级部门列表async orgFirstLevelList() {let data {schoolId:this.state.schoolId};let depList await orgFirstLevelList(data);this.setState({depList: depList})}//删除所选部门deleteDep…

OpenHarmony(鸿蒙南向)——平台驱动指南【I2C】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 I2C&#xff08;Inter Integrated Circuit&#x…