面试题--12

news2024/11/25 16:19:24

1.MySQL 的内连接、左连接、右连接有什么区别?
2.MySQL 索引是怎么实现的?
3.索引的优点和缺点—查询频率高的字段
4.B+树的特点和作用----必须先看 下面的网址
5.什么是聚集索引和非聚集索引
6.索引的分类
7.什么是最左前缀法则以及如何设计最左法则
8.怎么验证 MySQL 的索引是否满足需求
9.说一下 MySQL 常用的引擎?
10.MySQL由哪些部分组成, 分别用来做什么
11.说说对 SQL 语句优化有哪些方法 [必须背会
12.说一下 MySQL 的行锁和表锁?
13.说一下乐观锁和悲观锁?
14. MySQL 问题排查都有哪些手段?
15.什么是存储过程?用什么来调用?

1.MySQL 的内连接、左连接、右连接有什么区别?

内连接关键字:inner join;左连接:left join;右连接:right join

内连接是把匹配的关联数据显示出来;
左连接是左边的表全部显示 出来,右边的表显示 出符合条件的数据;
右连接正好相反.

2.MySQL 索引是怎么实现的?

索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从 而实现高效查找数据。

具体来说 MySQL 中的索引,不同的数据引擎实现有所不同,但目前主流的数据库引擎 的索引都是 B+ 树实现的,B+ 树的搜索效率,可以到达二分法的性能,找到数据区域之后 就找到了完整的数据结构了,所以索引的性能也是更好的。

3.索引的优点和缺点—查询频率高的字段

优势

1) 类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。

2) 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。

劣势

1) 实际上索引也是一张表,该表中保存了主键与索引字段,并指向表的记录,所以索引列也是要占用空间的。

2) 虽然索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE、DELETE。因为更新表时,MySQL 不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。

4.B+树的特点和作用----必须先看下面的网址

漫画:什么是B-树?
链接1:
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653190965&idx=1&sn=53f78fa037386f85531832cd5322d2a0&chksm=8c9909efbbee80f90512f0c36356c31cc74c388c46388dc2317d43c8f8597298f233ca9c29e9&scene=21#wechat_redirect
链接2:
https://zhuanlan.zhihu.com/p/54084335

漫画:什么是B+树?
链接1:
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653191027&idx=1&sn=4ba22e3ec8bd149f69fc0aba72e4347e&chksm=8c9909a9bbee80bfa1d8497ff0525df130414c1731b5aa5287bf16ea1cf86c8d8e6f20782184&scene=21#wechat_redirect
链接2:
https://zhuanlan.zhihu.com/p/54102723

在这里插入图片描述

在这里插入图片描述

5.什么是聚集索引和非聚集索引

在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。

非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。

6.索引的分类

1)单值索引 :即一个索引只包含单个列,一个表可以有多个单列索引
2) 唯一索引 :索引列的值必须唯一,但允许有空值
3) 复合索引 :即一个索引包含多个列
4) 主键索引:

7.什么是最左前缀法则以及如何设计最左法则

MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。

在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前面

8.怎么验证 MySQL 的索引是否满足需求

explain 查看 SQL 是如何执行查询语句的,从而分析你的索引是否满足需求。

explain 语法:explain select * from table where type=1。

9.说一下 MySQL 常用的引擎?

InnoDB支持 事务, MyISAM不支持
InnoDB支持 行级锁, MyISAM支持 表级锁.
InnoDB支持 外键, MyISAM不支持.
MyISAM支持 全文索引, InnoDB不支持(但可以使用Sphinx插件)

10.MySQL由哪些部分组成, 分别用来做什么

在这里插入图片描述

连接器: 管理连接, 权限验证.
分析器: 词法分析, 语法分析.
优化器: 执行计划生成, 索引的选择.
执行器: 操作存储引擎, 返回执行结果.
存储引擎: 存储数据, 提供读写接口.

11.说说对 SQL 语句优化有哪些方法 [必须背会

https://blog.csdn.net/biyusr/article/details/125599865

(1)Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。

(2)用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN。

(3)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

(4)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

(5)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

12.说一下 MySQL 的行锁和表锁?

MyISAM 只支持表锁,InnoDB 支持表锁和行锁,默认为行锁。

表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概
率最 高,并发量最低。

行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率
小,并 发度最高。

13.说一下乐观锁和悲观锁?

乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是
在提 交更新的时候会判断一下在此期间别人有没有去更新这个数据。

悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时
候都 会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。

数据库的乐观锁需要自己实现,在表里面添加一个 version 字段,每次修
改成功值加 1,这样每次修改的时候先对比一下,自己拥有的 version 和
数据库现在的 version 是否 一致,如果不一致就不修改,这样就实现了
乐观锁。

14. MySQL 问题排查都有哪些手段?

开启慢查询日志,查看慢查询的 SQL。
使用 explain 命令查询 SQL 语句执行计划。

15.什么是存储过程?用什么来调用?

存储过程是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。
如果某次操作需要执行多次 SQL,使用存储过程比单纯 SQL 语句执行要快。
可以用一个命令call对象 来调用存储过程。

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

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

相关文章

图论基础和表示

一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge&a…

chatgpt赋能python:Python开源免费——为什么它是SEO世界的最佳选择

Python开源免费——为什么它是SEO世界的最佳选择 介绍 Python是一种流行的程序设计语言,拥有众多的开源库和响应式社区。它广泛应用于机器学习、数据科学、Web开发、系统自动化等领域。Python不仅易于学习和使用,而且完全免费并且开源,使得…

Linux线程的同步与互斥(二) 条件变量+信号量

文章目录 二、线程同步条件变量1、条件变量的概念2、同步概念与竞态条件3、条件变量函数初始化4、条件变量函数销毁5、条件变量函数等待6、条件变量函数唤醒等待生产者消费者模型1、理论部分2、“3 2 1”原则3、基于阻塞队列的生产者消费者模型 POSIX信号量1、信号量的概念2、信…

时间序列学习 经典案例(5)【stability_selection】股票数据特征分析与特征选择

0.环境配置 本文用到的环境是: jupyter 略python 3.9stability_selection 略,见下文。scikit-learn 1.2.2seaborn 0.12.2pandas 1.3.5numpy 1.22.3matplotlib 3.6.3tushare 1.2.89baostock 00.8.80yfinance 0.2.18 1.stability_selection模块安装【问…

【MySQL数据库 | 番外篇】 聚合函数

前言: 聚合函数是分组查询中一个重要的组成部分,想要利用分组查询,就要对聚合函数有不错的掌握,因此我们在这里开一篇番外,讲解SQL语法中的聚合函数 聚合函数: 聚合函数是SQL中一种特殊的函数,…

大模型信息提取、文本生成、视觉语音应用

448页新书《基础模型自然语言处理》,详述大模型在信息提取文本生成视觉语音应用。 Dr. Gerhard Paa 等人合著的《Foundation Models for Natural Language Processing》 一书系统介绍基础模型研究和应用的全面概述,而且是目前对此方面研究最新的综述。 …

【Java】Java核心要点总结:59

文章目录 1. 线程的run()和start()有什么区别,为什么不直接调用run()2. synchronized是什么,以及原理3. Java中如何实现多线程的通讯和协作4. Volatile有什么特点,为什么能够保证变量的可见性5. 为什么说synchronized是一个悲观锁&#xff0c…

chatgpt赋能python:Python开发环境的下载方法

Python开发环境的下载方法 Python是一种高级的编程语言,受到广泛的社区和商业支持。它用于数据分析、人工智能和Web开发等领域,成为业界最流行的编程语言之一。搭建Python开发环境需要安装解释器、编辑器、包管理器和库,下面介绍Python开发环…

chatgpt赋能python:用Python开发在线电影播放网站如何进行SEO

用Python开发在线电影播放网站如何进行SEO 随着人们对于电影、电视剧等视频娱乐的需求日益增长,越来越多的在线电影播放网站涌现出来。作为开发者,如何通过搜索引擎优化(SEO)来使你的在线电影播放网站具有更好的可见度&#xff0…

chatgpt赋能python:如何更新Python库?

如何更新Python库? Python语言已经成为现代编程语言中最受欢迎的一种,它的成功归功于它的灵活性、简洁性和可读性。Python库是它成功的关键,这些库是程序员的基本工具箱,可以更快地编写、测试和部署程序。 然而,Pyth…

多分类问题

目录 多分类问题介绍1 多分类1.1 数据集1.2 数据可视化1.3 逻辑回归的向量化1.3.1 代价函数的向量化1.3.2 梯度的向量化1.3.3 正则化逻辑回归的向量化 1.4 多分类-分类器 1.5 使用分类器进行预测 多分类问题 介绍 在本练习中,我们将使用逻辑回归来识别手写数字&…

python安装使用Flask框架(Vscode)

编译器:VsCode,python3.** 首先安装,在终端输入 pip install flask安装成功后新建文件,app.python,创建一个简单的Web应用。 from flask import Flaskapp Flask(__name__)app.route(/) def hello():return Hello, …

chatgpt赋能python:Python平均值命令在数据处理中的应用

Python平均值命令在数据处理中的应用 Python是一门广泛应用于数据分析和数据处理的编程语言。在数据处理中,我们常常需要计算数据的平均值。Python中提供了多种方法来计算平均值,比如使用内置函数mean()或使用numpy库中的mean()函数等。本文将着重介绍P…

Vue封装API,详细解释。

1、为什么我们要封装API ps: 如果已经有了明确要封装API的需求,直接看第二步。 在没有封装API之前,我们是类似这样使用 axios 的 this.$axios.post(blogArticle/frontList,parms).then((resp) > { this.blogList resp.data, this.blogTota…

【玩转Linux操作】Linux常用文件管理命令

🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 目录 ​编辑 🎁ctrlc 🎁ctrlu 🎁t…

chatgpt赋能python:Python平均分函数:简介和使用方法

Python平均分函数:简介和使用方法 如果您正在寻找如何计算Python中多个数字值的平均分数的方法,请继续阅读。本文将为您介绍Python中平均分函数的用途和使用方法。 什么是平均分函数? Python的平均分函数是一个计算多个数字值的平均值的函…

分享可以在线录音实时转写的方法

小伙伴们使用过录音记录吗?那知道录音实时转写吗?有没有听说过这个功能呢?它是可以通过语音识别技术,将录音中的信息快速转换为文本,并实现实时显示输出的功能。听起来是不是很有趣?而且它无需任何专业设备…

线程,你是个什么?

线程的基本定义 线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程(Process)中,是进程中的实际运作单位。一个线程可以与同一进程中的其他线程共享进程的全部资源,包括内存、文…

深入浅出讲解闭包及其原理

闭包 什么是闭包? 闭包的概念并不复杂,但是它的定义比较绕(就像平时经常用到它,却又说不出来是什么)。可以在一个作用域中调用函数的内部函数并访问到该函数中的作用域的成员,这就是闭包。给一个建议&…

springboot整合swagger3

目录 一、导入swagger3的依赖二、SwaggerConfig代码的解读三、整体代码四、访问swagger3 一、导入swagger3的依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</versi…