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

我们来学mysql -- 连接(原理版)

我们来学mysql -- 连接

  • 题记
  • 两张表
  • 驱动表

题记

  • 回到初学者的视角,navicat或命令窗口,呈现一行行数据,类比为excel工作薄更是深入人心
  • 通过join将多表的记录关联起来,这似乎也没啥问题
  • 只是好像是那么回事,又…似乎有想说却表述不清的困惑
  • 其实,困惑的原因无非就是源于认识的不足,青少年的成长困惑如此,世间都是如此
  • 翻看《建立索引》《使用索引》,为各位看官,减少或者增加困惑,人生不过如此

两张表

t1f1t1f2t1f3t1f4
7bcd
········
t2f1t2f2t2f3t2f4
3bcd
7hacc
········

驱动表

  • 多表关联查询,总得有个先开始查的表,就叫它驱动表

  • select * from t1 , t2 where t1.t1f1 > 6 and t1.t1f1 = t2.t2f1 and t2.t2f3 < 'c'

  • 从驱动表中查出满足条件的记录,可以全表扫描,或者基于条件列的值建立索引,生成扫描区间

    • 基于建立的b+tree结构索引,快速定位到满足条件的第一条记录,避免全扫描
    • 查驱动表的sql select * from t1 where t1.t1f1 > 6
    • 定位到第一条数据
      在这里插入图片描述
  • 查到第一条记录后,从t1.t1f1 = t2.t2f1知道通过t1.t1f1=7作为关联表t2的条件值,带入到被驱动表

    • select * from t2 where t2.t2f1 = 7 and t2.t2f3 < 'c'
    • 被驱动表可以全表扫描,或者基于条件列的值建立索引
    • t2表查到记录
      在这里插入图片描述
    • t2查出的数据,结合t1查询的记录,返回给客户端
      在这里插入图片描述
  • 并不是将驱动表满足条件记录全部查出,再去关联被驱动表 ,而是查一条,就到被驱动表中查一次


http://www.kler.cn/a/377524.html

相关文章:

  • npm入门教程1:npm简介
  • 20241102在荣品PRO-RK3566开发板的预置Android13下适配宸芯的数传模块CX6603N
  • uni-app跨域set-cookie
  • Springboot——对接支付宝实现扫码支付
  • GPT-SoVITS 部署方案
  • c++基础12比较/逻辑运算符
  • vue+websocket实现即时聊天平台
  • C/C++--10--VS2008编译C语言时如何将const LineA * 里面的值赋值给另外一个结构体LineA?
  • 站群服务器对SEO优化的具体帮助是什么
  • goframe开发一个企业网站 前端界面 拆分界面7
  • Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL)
  • 设计模式-观察者模式(代码实现、源码级别应用、使用场景)
  • R6:LSTM实现糖尿病探索与预测
  • 中药大数据(四):数据预处理+管理端的功能实现
  • linux-valgrind检测分析C/C++程序(三)
  • 4. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验2:PWM驱动舵机)
  • Java方法的使用
  • MP4650模块改为固定电压记录
  • 【C++】深入理解 C++ 输入输出同步机制:为什么 cin/cout 没有 scanf/printf 快?
  • Java: 遍历 Map
  • Ubuntu编译linux内核指南(适用阿里云、腾讯云等远程服务器;包括添加Android支持)
  • golang有序map
  • vue3 + ts + element-plus 二次封装 el-table
  • ✨ Midjourney中文版:创意启航,绘梦无界 ✨
  • Harmony NEXT - AlphabetIndexer实现联系人字母索引
  • 密码学简介