实习面试准备——mysql篇1

news/2024/10/21 22:52:23

不得不说,博客园这个文章格式搞得真变扭,感觉不如word好用。这次就解释下面8个问题。1.慢查询、2.索引相关、3.聚簇索引与非聚簇索引、4。回表查询与覆盖索引。(格式无所谓了,就这样写吧)

1.慢查询:

在项目中,我们一般会对其中业务分析其运行时间。对于时间长的业务,分析是否是慢sql导致。定位慢查询的话,运维有Skywalkin工具。我们一般是通过sql中自带的慢sql文件。查到对于的sql,并用explain去分析这条sql语句。(慢查询sql的判定时间可以在conf配置文件中自定义)。判断其中的key,key_len字段是否命中索引、type字段是否为全索引扫描或全表扫描、extra字段是否有回表查询。

2.索引

本质是一种优化数据查询的数据结构。其提高了数据的检索效率、降低了数据库的IO交互,同时还对数据提供了排序,降低排序成本。

mysql默认存储引擎Innodb库采用的B+树作为索引的数据结构,B+树的节点可以有多个子节点,可以降低树的高度。同时B+树的非叶子节点不存储数据,只存储键值和指针。在叶子节点存储数据,其中数据用双向链表链接方便范围查找和扫描。

对于B树,节点存储了键值、数据、指针。并且数据间没有形成双向链表

关于使用索引:

1.数据量要大,因为索引要额外维护空间

2.对于长文本字段,可以进行前缀索引

3.对区分度明显的字段设置索引

4.经常排序、分组的字段

5.经常用复合索引,覆盖sql返回值

6.控制索引数量,索引会减低增删改的效率

 

3.聚簇索引与非聚簇索引

聚簇索引:默认的索引,是用主键创建的索引,B+树叶子节点返回的是当前行的所有数据 (唯一)

非聚簇索引(二级索引):自定义的索引,B+树叶子节点返回的是当前表的主键

 

4.回表查询与覆盖索引

非聚簇索引无法返回sql查询的所有返回值。于是得到主键后再经行一次聚簇索引,得到当前行的数据

覆盖索引便是非聚簇索引直接命中了sql的返回值,不需要回表

 

 

 

 

 

 

 

 

 

 

 
 

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

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

相关文章

24.10.19

A 数学题,不会。 随便取一数 \(v\),询问得到 \(t \equiv \log_g v \pmod p\)。 我们希望找到 \(x\) 使得 \(v^x \equiv g \pmod p\),即 \(g^{tx} \equiv g \pmod p \Leftrightarrow tx \equiv 1 \pmod {p-1}\)。那么只要 \(t\) 与 \(p - 1\) 互质即可求得逆元。 有原根相关知…

git安装-Tortoise git 安装汉化教程

git安装,Tortoise git安装汉化教程,代码版本管理工具1.首先下载 去官网下载 如果下载比较慢的,链接自取 https://pan.quark.cn/s/fcb9d0b39c7f 2. 安装git3. 安装git图形化工具Tortoise git4. 汉化

最新激活Navicat 15教程,附Keygen Patch

前言 大家好,我是小徐啊。navicat是一款常用的数据库连接工具,但是它本身是需要收费的,很不方便。那么,有没有免费的方式呢?今天小徐就介绍下如何激活navicat的方式,永久激活。文末附获取方式。 如何安装 首先,双击navicat的安装包,开始安装,旁边的就是激活工具,待会…

字符串json数组怎么转换成jsonobject类型

字符串数据[]怎么转换成jsonobject格式 String jsonString = "[{\"code\": \"200\", \"msg\": \"读取成功,返回数据条数\", \"data\": [{\"user_id\": \"1\", \"user_name\": \"小…

Python pickle

Python picklepickle在python中 实现对象结构的 序列化和反序列化 python序列化(Pickling)是一个将python对象层次结构转换为 可以本地储存 或者 网络传输的 字节流的过程 python反序列化(unpickling) 是将字节流还原为对象层次结构数据序列化:就是把不能直接储存的数据 储存…

ELK04 ELK综合案例, logstash写入mysql, kibana访问验证 ubuntu使用

6 ELK 综合实战案例6.1 Filebeat 收集Nginx日志利用 Redis 缓存发送至 Elasticsearch 图上ip地址仅供参考 6.1.2.2 修改 Filebeat 配置#安装redis(访问0.0.0.0和密码123456),nginx(访问日志json格式)[root@ubuntu ~]#vim /etc/filebeat/filebeat.yml filebeat.inputs: - type…