MySQL高级面试点

news2024/9/24 1:21:30

Explain语句结果中各个字段分别代表什么

id:查询语句没出现一个select关键字,MySQL就会给他分配一个唯一id

select_type: select关键字对应哪个查询的类型

simple:简单的查询 不包含任何子查询

primary:查询中如果包含复杂的子部分,最外层查询被标记为Primary

oerived:在from列表中包含的子查询被标记为derived,MySQL会递归执行这些子查询,把结果放在临时表里

table:表名

type:查询方式(是用索引还是全表)

possible_keys:可能用到的索引

key:实际用到的索引

key_len:实际使用到的索引长度

ref:显示索引的哪一列被使用了

rows:预估需要遍历的条数

extra:额外信息,比如排序等

—些常见的重要的额外信息: Using filesort,: MySQL无法利用索引完成的排序操作称为“文件排序”。 排序的时候没有使用索引 Using temporary: Mysql在对查询结果排序时使用临时表,常见于排序order by和分组查询group by。 一般他出现会伴随着using filesort的出现,因为分组中包含了排序的过程 using temporary其实就是分组的时候没有使用索引,同时也会触发排序时没有使用索引 这两个一般考虑优化 using index:表示索引被用来执行索引键值的查找,避免访问了表的数据行,效率不错。 直接从索引(索引中包含这个字段)中获取了数据 不用在查询表 Using where:表示使用了where过滤。

索引覆盖:索引覆盖其实就是你要查询的所有字段在索引中都包含,所以可以直接从索引中获取数据,

而不用再去数据库中查询。

索引失效:

1、需要满足最佳左前缀法则

如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。(要想使用索引最左侧的必须含有,右侧的可以没有)

2、满足不在索引列上做任何计算、函数操作,这些操作会导致索引失效而转向全表扫描

3、存储引擎不能使用索引中范围条件右边的列

就比如

如果给id age name设置了一个联合索引

select * from user where id =1 and age = 12 and name ="zhangsan"

这个时候三个条件都会使用索引查询

如果

select * from user where id = 1 and age>12 and name ="zhangsan"

这个时候他索引之后查询到 age>12就会停止因为 不能使用范围条件右边的列

4、MySQL在使用不等于是无法使用索引会导致全表扫描

select * from user where id!=1

5、 is null可以使用索引,但是is not null 无法使用索引

select * from user where name is not null

6、like以通配符开头会使索引失效导致全表扫描

select * from user where name like "%明"

7、字符串不加单引号 索引会失效

 select * from user where name = zhangsan

8、使用or连接时索引失效

select * from user where id =1 or age = 12

排序优化:

1、尽量避免使用using fileSort 无索引排序

2、order by 语句使用索引最左前列或者使用where 子句与order by子句条件组合满足索引最左前列

3、where子句中如果出现索引范围查询 会导致order by索引失效

关联查询优化:

在MySQL中,“page”(页面)通常指的是存储引擎的数据页面或者查询执行计划中的一页结果集。

  1. 数据页面:存储引擎(如InnoDB)会将数据存储在物理上的数据页面中。这些页面是存储引擎用来管理和访问数据的基本单位。每个页面通常有固定的大小(例如16KB),并且存储引擎使用这些页面来存储和检索数据。

  2. 查询执行计划中的页面:当执行一个查询时,MySQL查询优化器会生成一个执行计划,描述如何检索和处理数据。这个执行计划可能包含多个步骤,每个步骤生成的结果集称为一个页面。这些页面描述了查询执行过程中的中间结果或最终结果的一页。

总之,在MySQL中,"page"这个术语具体含义取决于上下文,可能是关于存储引擎数据页面的物理存储单位,也可能是查询执行计划中的结果集页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SparkStreaming--scala

文章目录 第1关:QueueStream代码 第2关:File Streams代码 第1关:QueueStream 任务描述 本关任务:编写一个清洗QueueStream数据的SparkStreaming程序。 相关知识 为了完成本关任务,你需要掌握:1.如何使用S…

<数据集>光伏板缺陷识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:4 标注类别名称:[Crack,Grid,Spot] 序号类别名称图片数框数1Crack8688922Grid8248843S…

从汇编层看64位程序运行——栈帧(Stack Frame)边界

大纲 RBP,RSP栈帧边界总结参考资料 在《从汇编层看64位程序运行——栈帧(Stack Frame)入门》中,我们简单介绍了栈帧的概念,以及它和函数调用之间的关系。如文中所述,栈帧是一种虚拟的概念,它表达了一个执行中的函数的栈…

Python之Excel自动化处理(二)

一、Excel设置样式 1.1、常用方法与属性 函数名&属性含义xlwt.Font()创建字体样式font.name设置字体类型font.colour_index设置字体颜色font.height设置字体大小font.bold设置字体是否为加粗font.underline设置字体下划线font.italic设置字体斜体xlwt.Alignment()创建字体…

笔记 1 : 课本前 2 章

现在开始跟着彭老师学习 arm 。把重要的知识点归拢一下,便于复习。早日学有所成,为国为家为己,更幸福些。 (1)冯诺依曼架构与哈弗架构,与混合架构: 以及: (2&#xff0…

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的色彩格式(又译作色度采样结构、像素格式): 在vlc中也可以获取到色彩格式(vlc底层也使用了FFmpeg进行解码): 这个色彩格式就是之前的文章《音视频入门基础…

03-Charles实战

一、抓包分析问题示例 1)问题描述 2)抓包分析 这是后台响应回来的错误信息,说明问题一是后台的原因;但是后台只响应了一条信息,而前端页面却显示两条错误信息,说明前端页面处理异常的时候逻辑有问题&#…

《昇思25天学习打卡营第3天|03张量Tensor》

说在开始 学习下mindspore中对tensor的处理逻辑。 Tensor属性 张量的属性包括形状、数据类型、转置张量、单个元素大小、占用字节数量、维数、元素个数和每一维步长。 形状(shape):Tensor的shape,是一个tuple。 数据类型&…

windows USB 设备驱动开发- USB Type-C支持(一)

传统的 USB 连接使用两端都有 USB A 和 USB B 接头的电缆。 USB A 连接器始终插入主机端,USB B 连接器连接功能端,该功能端是手机) 或外设 (鼠标、键盘) 的设备 (。 使用这些连接器,只能将主机连接到函数;绝不是另一个主机的主机或另一个函数…

如何安装dotenv,避坑指南,安装包的包名有误?

嗨,大家好,我是蓝若姐姐。最近在研究AI大模型,想写一个调用openai接口的demo,结果发现在装一个三方库的时候一直报错,mac电脑安装dotenv报错,具体情况是 执行这个命令: pip install dotenv 遇…

提升 Kubernetes 日志记录能力,提高可观察性

介绍 在微服务和容器化应用时代,有效管理和监控应用的健康和性能至关重要。Kubernetes是一个用于自动部署、扩展和管理容器化应用的开源系统,已成为寻求敏捷性和弹性的企业的首选解决方案。 然而,由于 Kubernetes 的分布式架构、高日志量和…

【数据结构】栈和队列的深度探索,从实现到应用详解

💎所属专栏:数据结构与算法学习 💎 欢迎大家互三:2的n次方_ 🍁1. 栈的介绍 栈是一种后进先出的数据结构,栈中的元素只能从栈顶进行插入和删除操作,类似于叠盘子,最后放上去的盘子最…

Git代码管理工具 — 4 Git分支详解

目录 1 Git 分支概念 2 Git 分支基本操作 2.1 git branch查看与创建本地分支 2.2 git checkout切换分支 2.3 git merge合并分支 2.4 删除分支 3 解决冲突 1 Git 分支概念 Git 分支允许你从当前开发线上分离出来,进行独立的开发工作,而不会影响主…

用 AI 写歌词,让音乐表达与众不同

在音乐的广袤天地中,我们都渴望通过独特的表达来触动人心,展现自我。而如今,AI 技术的崛起为音乐创作带来了全新的突破,让我们能够以一种前所未有的方式赋予音乐独特的灵魂。 “妙笔生词智能写歌词软件(veve522&#…

Window10下安装WSL-Ubuntu20.04

1.开启并更新WSL 1.1开启WSL 首先先来看一下电脑是否能够开启WSL:待补充... 然后再来看一下如何开启WSL:win->设置->应用->应用和功能->程序和功能,如下所示: 最后选择启用或关闭Windows功能,开启两个选项:1.Hyper-V…

大语言模型诞生过程剖析

过程图如下 📚 第一步:海量文本的无监督学习 得到基座大模型🎉 🔍 原料:首先,我们需要海量的文本数据,这些数据可以来自互联网上的各种语料库,包括书籍、新闻、科学论文、社交媒体帖…

K8S系列-Kubernetes基本概念及Pod、Deployment、Service的使用

一、Kubernetes 的基本概念和术语 一、资源对象 ​ Kubernetes 的基本概念和术语大多是围绕资源对象 Resource Object 来说的,而资源对象在总体上可分为以下两类: 1、某种资源的对象 ​ 例如节点 Node) Pod 服务 (Service) 、存储卷 (Volume)。 2、…

记录些Redis题集(4)

Redis 通讯协议(RESP) Redis 通讯协议(Redis Serialization Protocol,RESP)是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议,设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…

Adminer-CVE-2021-21311

在其4.0.0到4.7.9版本之间,连接 ElasticSearch 和 ClickHouse 数据库时存在一处服务端请求伪造漏洞(SSRF)。 VPS开启HTTP服务 VPS 开启HTTP 再同时跑POC 确保能访问poc里的链接文件 第一是目标地址 第二个是跳转地址 第三个是监听地址 如果…

昇思25天学习打卡营第21天|DCGAN生成漫画头像

DCGAN原理 DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Adversarial Networks)是GAN的直接扩展。不同之处在于,DCGAN会分别在判别器和生成器中使用卷积和转置卷积层。 它最早由Radford等人在论文Unsupervised Re…