MySQL优化之外连接消除----空值拒绝


什么叫空值拒绝呢?请看下面用例
 



可以看到,外连接中,从表的表连接列,tb2.id出现了null,因为tb2中并没有id=5的情况

点击(此处)折叠或打开

  1. select * from tb1 left join tb2 on tb1.id=tb2.id where tb2.id>1;
     
  2. select * from tb1 inner join tb2 on tb1.id=tb2.id where tb2.id>1;

从结果上看,两者一致


按照之前对空值拒绝的理解,第一个语句的where条件中有从表tb2的选择条件,且依据这个选择条件筛选得到的最终结果集中,不存在tb2.id为null的数据行
所以第一个语句应该是被优化器转换成了内连接;
查看第一个语句的trace,部分结果如下
 


 


可以看到外连接已经转换成了内连接

当然,这个cond-->tb2.id可以换成其他的列,比如说tb2.col1>0
 


 



如比较复杂的cond,就需要特别注意 or 的情况
 


当tb1.col1>0的条件为true,tb2.col1>0为false时,无法满足空值拒绝了,所以最终这个语句只能采用left join进行连接

PS:如书中描述空值拒绝的条件可以出现在where和on上面

试验:

trace信息
 


并没有将外连接转换为内连接,应该是条件写的并不完整,所以在前面的理解和总结中,并没有加上on,只是单独写了where

点击(此处)折叠或打开

  1. select tb1.id, tb2.id from tb1 left join tb2 on tb1.id=tb2.id where tb1.col1>0 or tb2.col1>0

点击(此处)折叠或打开

  1. select tb1.id, tb2.id from tb1 left join tb2 on tb1.id=tb2.id and tb2.col1>0;

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

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

相关文章

商品说明书的制作工具来啦,用这几个就够了!

商品说明书是用户了解产品特性、性能、使用方法的重要途径。一个明确、易懂的商品说明书,可以显著提升用户体验,进而提升产品的销量。但我们都知道,制作一份高质量的说明书并不容易,需要仔细设计、计划和撰写。幸运的是&#xff0…

解决 linux 服务器 java 命令不生效问题

在Linux系统中,当你安装Java并设置了JAVA_HOME环境变量后,你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件,它包含了系统的全局环境变量设置。 但是需要注意的是,source /e…

数据运营分析-详解

一、指标与指标体系 指标体系就是业务逻辑的框架,也是思考业务逻辑的第一步 案例: 老板,我负责的用户活跃,主要考察每天启动产品的注册用户数量,整体来看,每月活跃保持7.3%的增长,是因为渠道团队的拉新活动带来很多新增注册用户,占每月活跃用户的40%,新一年会继续沿…

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量,这一节我们就可以实现键盘驱动了,访问键盘输入的数据也属于临界区资源,所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的,在当时,按下键盘就会触发中断&a…

图的基础和图的遍历(--蓝桥云)

图的基础概念 度数&#xff1a;出边入边的条数 有向边&#xff1a;有箭头 图的存储方式 //邻接表 List<int []> list[N] list<x>//存放x的所有出点的信息 list[i][j]{first,second}//其中first表示从i出发的某个出点的编号&#xff08;这个出点是i的第j个出点&…

Lecture 1 - Introduction

Lecture 1 - Introduction MIT 6.824 Distributed Systems 1、概念预览 分布式系统需要考虑的因素&#xff1a; Parallelism &#xff1a;并行性Fault tolerence &#xff1a;容错性Physicial &#xff1a;不同系统之间物理距离引起的通信问题**Security ** &#xff1a;不…

eps32官方ESP-IDF开发工具IDE的使用

1、创建工程 创建的工程目录如下&#xff1a; .c文件中很多报错&#xff0c;需要编译下&#xff0c;点击左上角的"锤子"按钮 2、烧录 3、打开终端查看信息 如上信息表明运行正常 附 问题&#xff1a;如果烧录的过程中报如下错误&#xff1a; UnicodeDecodeError: gb…

黑马鸿蒙笔记2

1.图片设置&#xff1a; 1 加载网络图片&#xff0c;申请权限。 申请权限&#xff1a;entry - src - resources - module.json5 2 加载本地图片 ,两种加载方式 API 鼠标悬停在Image&#xff0c; 点击show in API Reference interpolation&#xff1a;看起来更加清晰 resou…

测底解决msvcp140.dll丢失难题,总结5种靠谱的解决方法

在尝试运行特定程序或执行一段代码时&#xff0c;系统反馈了一条明确且关键的错误信息&#xff1a;“找不到msvcp140.dll”。这意味着&#xff0c;由于缺失了名为“msvcp140.dll”的动态链接库文件&#xff08;Dynamic Link Library&#xff09;&#xff0c;当前的操作无法按照…

22 多态

目录 多态的概念多态的定义及实现抽象类多态的原理单继承和多继承关系中的虚函数表继承和多态常见的面试问题 前言 需要声明的&#xff0c;下面的代码和解释的哦朴实vs2013x86环境&#xff0c;涉及指针是4bytes&#xff0c;如果要其他平台下&#xff0c;部分代码需要改动。比…

.NET CORE 分布式事务(二) DTM实现TCC

目录 引言&#xff1a; 1. TCC事务模式 2. TCC组成 3. TCC执行流程 3.1 TCC正常执行流程 3.2 TCC失败回滚 4. Confirm/Cancel操作异常 5. TCC 设计原则 5.1 TCC如何做到更好的一致性 5.2 为什么只适合短事务 6. 嵌套的TCC 7. .NET CORE结合DTM实现TCC分布式事务 …

03_制作U盘启动盘

一、准备工作 系统镜像.ISO UltraISO 二、制作U盘启动盘 打开UltraISO 文件-打开&#xff0c;选择已下载的镜像文件。 插入U盘&#xff0c;启动-写入硬盘映像。

8.图论——2.kruskal算法dijkstra算法

最小生成树 n个顶点组成的带权无向图&#xff0c;其生成树&#xff0c;即包含全部n个顶点并有n-1条边的无向连通子图。 最小生成树即各边权值和最小的一棵生成树&#xff0c;求最小生成树有kruskal算法和prim算法 kruskal算法 建立一个并查集&#xff0c;每个顶点一个集合把…

vlan间单臂路由

【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器&#xff0c;交换机之间通过Trunk链路相连&#xff0c;路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…

一文掌握 TS 高级类型编程

原文地址&#xff1a;github.com/Nealyang/PersonalBlog 前言 或许现在很多同学都在用 TypeScript&#xff0c;但是更可能大多数的同学并不会 TypeScript&#xff0c;他们用的&#xff0c;只不过是给 js 加了一些“注释”&#xff0c;然后洋洋得意“TypeScript 不过如此” 但是…

CSS(四)---【链接美化、浮动布局、三种定位】

零.前言 本篇主要讲解<a>标签链接美化、页面的浮动布局&#xff0c;以及“相对定位”、“绝对定位”、“固定定位”三种定位。 关于其它请查看作者其它文章&#xff1a; CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属…

基于springboot实现社区团购系统项目【项目源码+论文说明】

基于springboot实现社区团购系统演示 摘要 本课题是根据用户的需要以及网络的优势建立的一个社区团购系统&#xff0c;来满足用户团购的需求。 本社区团购系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&…

水泊梁山108小酒坛之呼保义宋江

宋江【绰号呼保义、及时雨】字公明&#xff0c;是古典名著《水浒传》中的角色。原为山东郓城县押司&#xff0c;他和晁盖互通往来的事被阎婆惜发现&#xff0c;因此怒杀阎婆惜&#xff0c;逃回家隐藏。后前往清风寨投靠花荣&#xff0c;却被清风寨观灯时遭知寨刘高之妻陷害入狱…

LeetCode算法——数组篇

对刷过的算法进行总结&#xff0c;所用解法都是最符合我个人逻辑的&#xff0c;以后再刷的话就看这篇帖子了 # 代码随想录——数组理论基础 首先要知道数组在内存中的存储方式&#xff0c;这样才能真正理解数组相关的面试题 数组是存放在连续内存空间上的相同类型数据的集合 …

基于java+springcloud的分布式架构网上商城

开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…