mysql调优-Join多种连接方式

简单嵌套循环连接

请添加图片描述

r为驱动表,s为匹配表,可以看到从r中分别取出每一个记录去匹配s表的列,然
后再合并数据,对s表进行r表的行数次访问,对数据库的开销比较大

索引嵌套循环连接

请添加图片描述

这个要求非驱动表(匹配表s)上有索引,可以通过索引来减少比较,加速查询。
在查询时,驱动表(r)会根据关联字段的索引进行查找,当在索引上找到符合的值,再回表进行查询,也就是只有当
匹配到索引以后才会进行回表查询。
如果非驱动表(s)的关联键是主键的话,性能会非常高,如果不是主键,要进行多次回表查询,先关联索引,然后根
据二级索引的主键ID进行回表操作,性能上比索引是主键要慢。

缓存块嵌套循环连接

请添加图片描述

如果有索引,会选取第二种方式进行join,但如果join列没有索引,就会采用Block Nested-Loop
Join。
可以看到中间有个join buffer缓冲区,是将驱动表®的所有join相关的列都先缓存到join buffer
中,然后批量与匹配表(s)进行匹配,将第一种多次比较合并为一次,降低了非驱动表(s)的访问频
率。
默认情况下join_buffer_size=256K,在查找的时候MySQL会将所有的需要的列缓存到join buffer当中,
包括select的列,而不是仅仅只缓存关联列。
在一个有N个JOIN关联的SQL当中会在执行时候分配N-1个join buffer。

通过下面这条SQL查询默认的 join_buffer 大小。

show variables like '%join_buffer%';

在这里插入图片描述

连接方式的小总结

当使用内连接的时候,两种方式一样
当使用左外连接的时候,会把左表的数据全部查出
当使用右外连接的时候,会把右表中的数据全部查出

参考:
https://dev.mysql.com/doc/refman/5.7/en/nested-loop-joins.html

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

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

相关文章

Linux中目录的操作和文件属性获取(opendir、readdir、close函数的使用)

访问目录 opendir函数 #include <dirent.h> DIR *opendir(const char *name); DIR *fdopendir(int fd); 使用文件描述符&#xff0c;要配合open函数使用 DIR是用来描述一个打开的目录文件的结构体类型 成功时返回目录流指针&#xff1b;出错时返回NULLreaddir函数 #incl…

Adobe Media Encoder 2023下载安装教程,ME 2023安装教程,附安装包和工具,无套路,轻松搞的安装

前言 Adobe Media Encoder是一个视频和音频编码应用程序&#xff0c;可让针对不同应用程序和观众&#xff0c;以各种分发格式对音频和视频文件进行编码。包括专门设计的预设设置&#xff0c;以便导出与特定交付媒体兼容的文件&#xff0c;可以按适合多种设备的格式导出视频&am…

【医学图像数据增强】切割-拼接(CS-DA)

切割-拼接CS-DA CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想 论文链接&#xff1a;https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf 大多数用于医学分割的数据增强技术最初是在自然图像上开发的&#x…

Git 教程 | 将本地修改后的文件推送到 Github 指定远程分支上

Git 是一种分布式版本控制系统&#xff0c;用于敏捷高效地处理任何大小的项目。它是由 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的开源版本控制软件。Git 的本地克隆就是一个完整的版本控制存储库&#xff0c;无论脱机还是远程都能轻松工作。开发人员会在本地提交其工…

Maven进阶

学习目标 理解分模块开发的意义 能够使用聚合工程快速构建项目 能够使用继承简化项目配置 能够根据需求配置生产、开发、测试环境&#xff0c;并在各环境间切换运行 一、分模块开发与设计 1. 分模块开发的意义 问题导入 分模块开发对工程有什么好处&#xff1f; 模块拆分原…

接口测试时遇到接口加密了该如何处理?

对明文编码生成信息摘要&#xff0c;以防止被篡改。比如MD5使用的是Hash算法&#xff0c;无论多长的输入&#xff0c;MD5都会输出长度为128bits的一个串。摘要算法不要秘钥&#xff0c;客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。 对称加密 对称加密…

VM下Unbunt虚拟机上网设置

系列文章目录 VM下Unbunt虚拟机上网设置 VM虚拟机上网设置 系列文章目录一、VM虚拟机上网设置 一、VM虚拟机上网设置 右击VM软件中你需要设置的虚拟机&#xff0c;选择设置 宿主机如果你用的是笔记本外加WIFI连接选择NAT网络模式 进入虚拟机看能否上网 不行的话&#xff0c;进…

计算机速成课Crash Course - 23. 屏幕 2D 图形显示

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章&#xff0c;全网首发公众号 “摸鱼IT” 锁定 -上午11点 - &#xff0c;感谢大家关注、转发、点赞&#xff01; 计算机速成课Crash Course - 23. 屏幕& 2D 图形显示 (qq.com) 23. 屏幕& 2D 图形显示 这台…

【Go 快速入门】安装 Go 语言 | 开发工具 Goland | 第一个 Go 语言程序

文章目录 前言安装 Go 语言编译器 Goland运行 Go 程序补充 前言 本系列教程&#xff0c;目的是帮助一个有其他编程基础的 Go 语言小白快速入门 Go 语言&#xff0c;而非启发式学习。每篇幅保证不说废话&#xff0c;尽可能精炼总结&#xff0c;为上手后续的 Go 相关项目打下基础…

目标检测数据集 - 抽烟检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;抽烟检测数据集&#xff0c;真实合成场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如街景抽烟、写字楼抽烟、办公室抽烟、楼道抽烟、遮挡行人抽烟、严重遮挡行人抽烟数据&#xff1b;适用实际项目应用&#xff1a;公共场所监控或室内监控场…

2024年,每个人都应该知道的10个免费学习资源网站

在这个数字化的时代&#xff0c;有着许多宝贵的网络资源&#xff0c;提供了无限的学习机会&#xff0c;为每个人敞开了免费获取知识的大门。但很多人不知道它们的存在。今天分享10个免费且丰富的学习资源网站&#xff0c;希望对大家所有帮助。 1.freeCodeCamp 您可以免费学习…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团&#xff08;证券代码&#xff1a;0022…

支持向量机(Support Vector Machines)(需要优化)

1.优化目标 一个更加强大的算法广泛的应用于工业界和学术界&#xff0c;它被称为支持向量机(Support Vector Machine)。与逻辑回归和神经网络相比&#xff0c;支持向量机&#xff0c;或者简称 SVM&#xff0c;在学习复杂的非线性方程时提供了一种更为清晰&#xff0c;更加强大…

利用C语言实例描述程序中的内聚和耦合

编程时&#xff0c;我们讲究的是高内聚低耦合&#xff0c;在协同开发、代码移植、维护等环节都起到很重要的作用。 一、原理篇 而低耦合&#xff0c;是指模块之间尽可能的使其独立存在&#xff0c;模块之间不产生联系不可能&#xff0c;但模块与模块之间的接口应该尽量少而简单…

从零学习Hession RPC

为什么学习Hessian RPC&#xff1f; 存粹的RPC&#xff0c;只解决PRC的四个核心问题&#xff08;1.网络通信2.协议 3.序列化 4.代理&#xff09;Java写的HessianRPC落伍了&#xff0c;但是它的序列化方式还保存着&#xff0c;被Dubbo(Hessian Lite)使用。 被落伍&#xff0c;只…

浅谈DNS的工作原理及其作用

DNS&#xff0c;全称为Domain Name System&#xff0c;即域名系统&#xff0c;是一种用于将域名和IP地址相互映射的分布式数据库系统。它将可读的域名转换为对应的IP地址&#xff0c;使得用户可以更方便地通过域名来访问网络上的资源。今天锐成就简单探讨一下DNS的工作原理及其…

Android网络状态差的处理方案

1,在没有网络的情况下的处理 相信大家面对这个情况处理起来是毫无压力的. //有网 if (Utils.isNetworkConnected(this)) {loadingView.setVisibility(View.VISIBLE);//显示正在加载//联网获取数据getDataFromNet(); } else {//没网直接显示本地数据.showView();Toast.makeTex…

Ubuntu20.04 安装 ROS noetic + MAVROS

本文在 AlphaCatOvO【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程 基础上&#xff0c;根据实际安装经验&#xff0c;稍微进行补充。 一、安装Ubuntu20.04 假设已经正确安装。 二、安装 ROS noetic 2.1 换源 执行 sudo apt update sudo mv /etc/apt/sources.list /etc/apt/…

C++代码入门07 函数调用语句

图源&#xff1a;文心一言 听课笔记简单整理&#xff0c;包括以下内容”&#x1f40b;3.2 二进制转十进制、&#x1f40b;3.3 数学公式1&#xff1a;用反切函数表示pi、&#x1f40b;3.4 判断回文数、&#x1f40b;3.5 数学公式2&#xff1a;分段函数、&#x1f40b;3.6 扔骰子…

容器安全工具

容器安全工具是用于保护和监控容器环境安全的工具。它们提供了一系列功能,包括容器镜像的漏洞扫描、运行时监控、事件日志记录、访问控制、运行权限管理等。以下是一些常见的容器安全工具: 1. Docker Bench Security:用于检查Docker环境配置的安全性,提供一些最佳实践建议…