【MySQL】ON与WHERE的区别(临时表)

ops/2025/1/11 14:13:26/

先说区别后举例

核心概念:临时表

  • “临时表”,这是理解 JOIN 操作的关键。数据库在执行 JOIN 时,确实会生成一个中间的、逻辑上的结果集(你可以把它想象成一个临时表),然后在这个结果集上进行后续操作。
  • 性能: 创建和维护临时表会消耗一定的资源,例如内存和磁盘 I/O。对于大型表和复杂的查询,临时表可能会影响查询性能。
  • 优化: 优化查询语句(例如使用索引、减少 JOIN 的表数量等)可以帮助减少或避免临时表的使用,从而提高查询性能。
  • 生命周期:
    • 会话级临时表: 如果临时表是在执行查询时创建的,它们通常是“会话级”的。这意味着当当前数据库连接(会话)结束时,这些临时表会自动被删除。
      • 会话的概念:简单来说就是mysql -u -p登录开始 到 exit结束
    • 查询结束: 在大多数情况下,一旦查询执行完毕,MySQL 也会立即删除该查询所使用的临时表。
  • 查询是否创建了临时表:EXPLAIN命令
  • EXPLAIN SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id;
    

ON 条件的作用

  • 连接阶段筛选: ON 条件的作用是在 连接过程 中,用来 匹配两张表 的行。
  • 保证左表完整性: 对于 LEFT JOIN 来说,最重要的特点是:即使右表没有匹配的行,左表的行 仍然会保留 在结果集中。此时,右表对应的列会填充 NULL 值。
  • 决定哪些行被匹配: ON 条件决定哪些右表的行应该和左表的行进行 匹配,并放入临时的结果集中。
  • 不改变左表结果: 即使 ON 条件不为真 (例如 ON t1.id = t2.id 时,t2 表中没有匹配 t1 表 id 的行),LEFT JOIN 仍然会保留左表 t1 的行,只是把 t2 表的列都置为 NULL

WHERE 条件的作用

  • 结果筛选: WHERE 条件是在 临时表生成后,用来 过滤最终结果集 的条件。
  • 不保证左表完整性: 如果 WHERE 条件不满足,则会导致 整行被过滤掉,无论这行是否来源于左表。 这意味着,LEFT JOIN 的 “保留左表所有行” 的特性可能被破坏,相当于将其变成了 INNER JOIN
  • 在所有匹配完成后过滤: WHERE 条件作用于已经完成连接操作的临时表上。

示例

解法应该是左外连接

SELECT p.FirstName, p.LastName, a.City, a.StateFROM Person AS p LEFT JOIN Address AS aON p.PersonId = a.PersonId;

 


http://www.ppmy.cn/ops/149177.html

相关文章

蓝笔科技 | 超凡妈妈赋能计划-【北大生涯规划师特别企划】

12月27日,“超凡妈妈赋能计划-北大生涯规划师特别企划”在广州正式启动,据了解,本次超凡妈妈赋能计划是由广州蓝笔科技信息有限公司牵头发起并主办,中国关心下一代健康体育基金会作为公益支持单位,北京大学作为项目技术…

【Docker】Dockerfile ENV环境变量传递问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、直接说结论二、怎么解决这个问题方案1. 不使用多级嵌套的变量方案2. 使用 bash 在启动时动态解析环境变量 前言 这两天在给生产环境部署skywalking链路监控…

elasticsearch常见故障汇总

es的入库突然出现异常,大量超时 查看集群状态,状态为红色 GET _cluster/health 具体查看,实体,看看是那些索引状态异常,看到wb_info_2025-01-08索引状态异常 GET _cat/indices?v 注:其他上面的步骤可以在…

第四、五章图论和网络爬虫+网络搜索

第四章 图论和网络爬虫 4.1 构建网络爬虫工程重点 构建网络爬虫的重点 用BFS还是DFS 在不考虑时间的情况下,这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容,但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如…

linux nginx 安装后,发现SSL模块未安装,如何处理?

👨‍⚕ 主页: gis分享者 👨‍⚕ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕ 收录于专栏:运维工程师 文章目录 前言SSL模块安装 前言 nginx 安装后,发现SSL模块未安装&…

2025年新出炉的MySQL面试题

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…

稀土化合物:引领科技创新,推动绿色发展

一、稀土化合物的基本概念 稀土化合物是指由稀土元素与其他元素形成的化学化合物。稀土元素包括镧系元素和铕、铽、镱、钇等,具有独特的物理、化学性质,这些元素在现代工业、科技和环保领域中扮演着至关重要的角色。稀土化合物具有非常丰富的光、电、磁…

风力发电新技术进展:开启绿色能源新篇章

摘要 本文深入探讨风力发电领域的新技术发展。风机大型化与高效化趋势显著,单机容量不断攀升,叶片与塔筒技术持续革新;控制技术智能化升级,实现精准运行与故障的提前预判;海上风电技术取得关键突破,浮式基础…