mysql join的原理及过程

连接过程

每获得一条驱动表记录,就立即到被驱动表寻找匹配的记录。

对于两表连接来说,驱动表只会被访问一遍,但被驱动表却要被访问好多遍;具体访问几遍取决于对驱动表执行单表查询后的结果集中有多少条记录。

​ 对于内连接来说,选取哪个表为驱动表都没关系。

​ 而外连接的驱动表是固定的,也就是说左(外)连接的驱动表就是左边的那个表,右(外)连接的驱动表就是右边的那个表。

连接原理

嵌套循环连接
连接步骤:

​ 步骤1 :选取驱动表,使用与驱动表相关的过滤条件,选取代价最低的单表访问方法来执行对驱动表的单表查询.

​ 步骤2:对步骤 1中查询驱动表得到的结果集中的每一条记录,都分别到被驱动表中查找匹配的记录(先通过“涉及两表的过滤条件”匹配,再进行“只涉及被驱动表的过滤条件”进行过滤)。

​ 由于被驱动表可能会访问多次,因此可以为被驱动表建立合适的索引以加快查询速度。

​ 如果驱动表非常大,则可能会多次访问被驱动表,就会导致很多次的磁盘I/O,此时可以使用基于块的嵌套循环连接算法来缓解由此造成的性能损耗。

优化:基于块的嵌套循环连续

join Buffer (连接缓冲区〉

​ Join Buffer 就是在执行连接查询前申请的一块固定大小的内存。先把若干条驱动表结果集中的记录装在这个 Join Buffer 中,然后开始扫描被驱动表,每条被驱动表的记录一次性地与 Join Buffer 中的多条驱动表记录进行匹配。由于匹配的过程都是在内存中完成的,所以这样可以显著减少被驱动表的I/O代价.

​ 最好的情况是 Join Buffer 够大 能容纳驱动表结果集中的所有记录,这样只需要访问一次被驱动表就可以完成连接操作了。

​ 由join buffe _size配置。

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

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

相关文章

Hologres的EXPLAIN和EXPLAIN ANALYZE简介

文章目录 一、执行计划1、概念简介2、使用方式①、EXPLAIN②、EXPLAIN ANALYZE 二、算子解读1、SCAN2、Index Scan和 Index Seek3、Filter4、Decode5、Redistribution6、Join7、Broadcast8、Shard prune和Shards selected9、ExecuteExternalSQL10、Aggregate11、Sort12、Limit1…

49-Oracle init.ora-PFILE-SPFILE-启动参数转换实操

一早出现EMCC挂了,之后发现EMCC依赖的instance 挂了,重启startup后发现spfile无法启动。还是和小伙伴把基础问题搞清。spfile是动态文件、动态文件、动态文件,linux下vi看起来部分乱码部分是可编辑的,vi即使可以编辑也需要转换成p…

spring碎片

包的扫描过程 判断当前是否是文件夹获取文件夹里面的所有内容判断文件夹是否为空,为空的话直接返回如果文件夹不为空,则遍历文件夹里面的所有内容 遍历得到每个file对象,继续进行判断,如果还是文件,则进一步进行递归遍历得到的file对象不是文件夹,是文件得到包路径类名称-字符…

如何形成项目经验在多个项目间的高效复用?

要实现项目经验的跨项目高效复用,核心在于建立系统化总结机制、标准化知识表达、平台化共享工具。其中,标准化知识表达尤为关键,它通过统一模板和分类体系,确保不同项目的经验可以被快速理解、轻松匹配到新场景,从而提…

目标检测之YOLOV11谈谈OBB

引言:从轴对齐到定向边界框的范式转变 在计算机视觉领域,目标检测算法长期受限于轴对齐边界框(AABB)的固有缺陷——当面对航拍图像中的舰船、遥感影像中的建筑物或工业质检中的倾斜零件时,传统边界框会包含大量背景噪…

Vue2之生命周期

文章目录 Vue生命周期Vue生命周期钩子生命周期钩子小案例在created中获取数据在mounted中获取焦点 Vue生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出…

Web 架构之多租户(SaaS)系统设计要点

文章目录 一、多租户系统概述定义应用场景 二、设计要点1. 数据隔离独立数据库共享数据库,独立 Schema共享数据库,共享 Schema数据访问控制 2. 资源分配计算资源存储资源 3. 租户管理租户注册与注销租户信息管理 4. 安全与合规身份验证与授权数据加密 三…

【Clickhouse系列】索引

目录 1. 主键索引 (Primary Key Index) - 核心是稀疏索引 2. 跳数索引 (Data Skipping Indexes) - 二级索引 3. 关键总结与最佳实践: ClickHouse的索引设计哲学与其他传统OLTP数据库(如MySQL)有显著不同,它更侧重于高效扫描大数…

445场周赛

第一题:检查元素频次是否为质数 给你一个整数数组 nums。 如果数组中任一元素的 频次 是 质数,返回 true;否则,返回 false。 元素 x 的 频次 是它在数组中出现的次数。 质数是一个大于 1 的自然数,并且只有两个因数…

【SQL语法汇总】

读音:MySQL —— 卖舌口 MySQL 实际上是DBMS软件系统, 并非数据库。通过系统管理维护数据库,DBMS相当于用户和数据库之间的桥梁。 MySQL是一种关系型数据库, 类似excel,用行和列的关系组织数据数据。 操作关系型数据库的DBMS系统大多数用SQL来管理数据。 SQL是编程语言…

C++法则10:引用本身是一个“别名”(alias),一旦绑定到一个对象后,就不能再重新绑定到其他对象。

C法则10:引用本身是一个“别名”(alias),一旦绑定到一个对象后,就不能再重新绑定到其他对象。 在C中,引用(reference)是一个已存在对象的别名。一旦引用被初始化绑定到一个对象&…

PHP 生成当月日期

一:按日期顺序排列的数组,而不是按周分组的二维数组 /*日期生成 *day: 日期数字 *date: 完整的日期字符串 (YYYY-MM-DD) *is_current_month: 是否属于当前月份 *is_prev_month: 是否是上个月的日期 *is_next_month: 是否是下个月的日期 *is_today: 是否是…

vue3+elementPlus实现无缝滚动表格封装

vue3+elementPlus+css+js 模拟liMarquee插件,实现无限滚动效果 功能:1、表格数据大于一定数量之后,开始向上滚动 2、当鼠标移入的时候,动画停止,鼠标移出,继续动画 3、滚动动画的速度可以自定义 4、表格的高度固定 5、向上滚动时,无限滚动,不存在卡顿 <template>…

AI赋能企业内训:2025智能化教育培训系统源码开发全解析

从线下集中授课到线上碎片化学习&#xff0c;从被动灌输到主动交互&#xff0c;越来越多企业开始关注“企业内训系统”的智能化升级。而这一切的背后&#xff0c;离不开AI技术的深度赋能。 笔者认为&#xff0c;2025年将是企业内训系统“从信息化走向智能化”的关键拐点。本篇…

旅游安全急救实训室:构建旅游行业安全人才培养新范式

在文旅产业蓬勃发展与安全应急需求日益凸显的背景下&#xff0c;旅游安全急救能力已成为从业者的核心素养之一。当前&#xff0c;旅游市场突发状况频发&#xff0c;如景区意外事故、游客突发疾病等&#xff0c;对从业人员的急救技能提出了更高要求——既要掌握基础急救操作&…

网络编程及原理(六):三次握手、四次挥手

目录 一 . TCP 的核心机制&#xff1a;连接管理 二 . 三次握手&#xff1a;建立连接 &#xff08;1&#xff09; 三次握手的意义 &#xff08;1.1&#xff09;初步验证通信链路是否流畅 &#xff08;1.2&#xff09;确认通信双方各自的发送、接受能力是否正常 &…

【LLaMA 3实战】2、LLaMA 3对话能力全解析:从架构革新到多智能体实战指南

引言:LLaMA 3对话能力的革命性突破 当Meta发布LLaMA 3时,其对话能力的跃升重新定义了开源大模型的边界。这款拥有128K上下文窗口的开源模型,不仅在MT-Bench评测中超越GPT-3.5,更通过分组查询注意力(GQA)等架构创新,实现了推理速度30%的提升。 本文将从底层架构到应用实战…

面试题-在ts中类型转换的方法

在 TypeScript 中&#xff0c;类型转换主要分为 类型断言&#xff08;Type Assertion&#xff09;、类型守卫&#xff08;Type Guard&#xff09; 和 类型兼容转换 三种方式。以下是详细分类和示例&#xff1a; 一、类型断言&#xff08;Type Assertion&#xff09; 强制编译…

IIS配置SSL证书

公司的一个项目使用IIS部署的网站&#xff0c;现在需要更新SSL证书。为了下次方便&#xff0c;在此做记录整理。 以下第一部分是查网络AI查询到的资料&#xff0c;解决了我心中对双击和从IIS导入有什么不同的疑惑。第二部分是我在这次实际操作过程中的截图。 一.证书安装方式 …

K8s初始化容器与边车容器比对

Kubernetes 中的初始化容器和边车容器 Kubernetes 作为一个开源容器编排平台&#xff0c;引入了强大的概念来管理和增强 Pod 内容器的功能。其中两个概念是初始化容器&#xff08;Init Containers&#xff09;和边车容器&#xff08;Sidecar Containers&#xff09;。尽管这两…