当前位置: 首页 > news >正文

MySQL中join联表的原理

前言

join语句只要做过SQL查询的时候基本上一定使用过,那么join语句的优化一直都是一个头痛的问题,怎么在联表的情况下尽可能的减少扫描行数,大幅度提供联表的查询效率,下面我对这个join语句的原理进行详细的讲解,看完之后,就可以做到心中有数,根据实际情况灵活的对join语句进行优化啦

join常见三种联表

INNER JOIN

可以简写成join

只返回两个表中匹配的行

包含两个表中都存在的记录

本质上就是返回两个表的交集

LEFT JOIN

返回左表的所有行,即使右表中没有匹配

包含左表所有记录

右表没有匹配时,右表列显示为NULL

左表是驱动表

RIGHT JOIN

返回右表的所有行,即使左表中没有匹配

包含右表所有记录

左表没有匹配时,左表列显示为NULL

右表是驱动表

join联表的原理

join关键字是把两个表分为驱动表和被驱动表的

left join   驱动表是左表

right join 驱动表是右表

inner join 也是有驱动表的概念的,因为这个关键字是求的交集,所以它会先检查实际参与关联的行数,就是两个表关联数据都不为空的行数,然后会优先选择参与关联行数少的表作为驱动表

join语句的执行过程  驱动表是⾛全表扫描,被驱动表是⾛搜索

        取驱动表中的一条数据,使用这条数据匹配被驱动表的数据,合成把这些数据关联在一起

        以此类推,直到驱动表中的数据扫描完毕结束

扫描行数越少,SQL执行效率越高,所以一般来说,我们的优化SQL中join语句目标就可以确定了

1、选择行数较少的表作为驱动表

2、对被驱动表的联接字段建立索引增加被驱动表的查询效率

3、驱动表不一定是具体的表,也可以是过滤后的临时结果集

http://www.dtcms.com/a/308706.html

相关文章:

  • 前端基础之《Vue(28)—Vue3 ref相关API》
  • web应用从服务器主动推动数据到客户端的方式
  • Windows 11下IDEA中使用git突然变得卡慢及解决办法
  • Spring-rabbit使用实战五
  • 生信软件49 - 全基因组亚硫酸氢盐测序(WGBS)比对与甲基化水平调用工具BSseeker2
  • Linux 进程管理与计划任务
  • 代码随想录算法训练营第五十七天|图论part7
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • Unity插件——Simple Waypoint System的使用总结
  • Apifox 7 月更新|通过 AI 命名参数及检测接口规范、在线文档支持自定义 CSS 和 JavaScript、鉴权能力升级
  • 20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式
  • 蓝牙LMP版本交换过程
  • 以AI大模型重构教育新生态,打造“教-学-练-辅-评”一体化智能平台
  • 为什么Android主线程与java主线程不同,不会退出?
  • 分布式系统的基石:ZooKeeper架构设计与实战指南
  • 【抄袭】思科交换机DAI(动态ARP监控)配置测试
  • 云上服务器常见的存储方式和类型
  • 自监督学习
  • get和post的请求在request里的应用与区别
  • 机器视觉的家电薄膜开关丝印应用
  • 前端 vue 第三方工具包详解-小白版
  • Data Processer
  • QQ输入法设置快捷键,更快造词或自定义短语
  • 智慧零售商品识别准确率↑32%:陌讯多模态融合算法实战解析
  • 2025年IntelliJ IDEA最新下载、安装教程,附详细图文
  • 人工智能如何助力工业领域实现可持续发展?
  • 循环神经网络RNN原理精讲,详细举例!
  • 人工智能与新闻传播:信息传播的变革
  • vue-seamless-scroll 与 echarts 三联水球图循环滚动的渲染难题-出现短暂空白
  • el-button长按触发事件(含未响应的解决方案)