sql优化,内外连接有什么区别

内外连接是啥不必多说,但在做关联查询的时候,二者是有一些区别的:
举例来说,首先是外连接(左外连接为例),当两个表都没有索引,就都是全表扫描

EXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;

在这里插入图片描述
对被驱动表(book)加上索引,就可以避免其被全表扫描了,可以看出rows从上面的20变成1了

ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】,可以避免全表扫描
EXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;

在这里插入图片描述
然后再在驱动表(type)加索引,发现没用

ALTER TABLE `type` ADD INDEX X (card); #【驱动表】,无法避免全表扫描
EXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;

在这里插入图片描述
这说明驱动表的索引可能用不到
然后是内连接

drop index X on type;
drop index Y on book;
EXPLAIN SELECT SQL_NO_CACHE * FROM type INNER JOIN book ON type.card=book.card;

在这里插入图片描述
然后加索引在book,ok结果稀疏平常

ALTER TABLE book ADD INDEX Y (card);
EXPLAIN SELECT SQL_NO_CACHE * FROM type INNER JOIN book ON type.card=book.card;

在这里插入图片描述
但是接下来我们再加索引在type,按常理来说你可能觉得type在左,是驱动表,但实际上不一定,优化器会决定让谁当驱动表,可能会发生下面的情况:

ALTER TABLE type ADD INDEX X (card);
EXPLAIN SELECT SQL_NO_CACHE * FROM type INNER JOIN book ON type.card=book.card;
```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ce99e0cfe4fd4aaf9de3b912419bb7e1.png)
**所以我们说内连接小表驱动大表,因为内连接的驱动表不一定是左是右**,这样会快

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

19个Python语法糖和9个内置装饰器

19 个Sweet的 Python Syntax Sugar,用于改善您的编码体验 文章目录 19 个Sweet的 Python Syntax Sugar,用于改善您的编码体验1. 联合运算符Union Operators:合并 Python 字典的最优雅方式2. 类型提示Type Hints:使您的 Python 程序…

EduChat账号密码登录

内测申请:请邮件dan_yhstu.ecnu.edu.cn,以“EduChat内测申请单位”作为邮件标题,邮件内容中写明用途 先去申请个账号和密码,会有一两天延迟吧,挺快的。 拿到账号之后去官网,点一个 官网传送门 就出来用账号密码登录的…

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

六、Redis 分布式系统

六、Redis 分布式系统 六、Redis 分布式系统6.1 数据分区算法6.1.1 顺序分区6.1.2 哈希分区 6.2 系统搭建与运行6.2.1 系统搭建6.2.2 系统启动与关闭 6.3 集群操作6.3.1 连接集群6.3.2 写入数据6.3.3 集群查询6.3.4 故障转移6.3.5 集群扩容6.3.6 集群收缩 6.4 分布式系统的限制…

幼儿园:人脸识别门禁技术,可以提高工作效率?

随着社会的不断发展和科技的飞速进步,人脸识别技术已经成为各行各业的一项重要工具。 在幼儿园管理中,人脸识别技术的应用不仅提高了安全性,也优化了接送流程,为幼儿园、家长和孩子们带来了更便捷的管理和服务体验。 客户案例一 …

快解析结合用友T+异地访问解决方案

用友T作为一款纯BS架构软件,外网用户只需打开浏览器,输入域名即可访问T服务器。但是由于网络原因,很多客户没有公网IP,使T远程访问无法实现。快解析云解析版结合T使用,无需公网IP、无需在路由器里开放端口,…

C++系列-第3章循环结构-26-认识do-while语句

C系列-第3章循环结构-26-认识do-while语句 在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 do-while循环…

Vue(一):Vue 入门与 Vue 指令

Vue 01. Vue 快速上手 1.1 Vue 的基本概念 用于 构建用户界面 的 渐进性 框架 构建用户界面:基于数据去渲染用户看到的界面渐进式:不需要学习全部的语法就能完成一些功能,学习是循序渐进的框架:一套完整的项目解决方案&#x…

Redis管道

问题引出 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。 2 服务端…

深入探究Protostuff枚举类型的序列化

背景: 有一天突然被一个群组排查线上问题,说是一个场景划线价和商品原价一模一样。看到问题时,我的内心毫无波澜,因为经常处理线上类似的问题,但了解业务后发现是上个版本经我手对接的新客弹窗商品算价,内心…

案例237:基于微信小程序的医院挂号预约系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

如何学习TS?

文章目录 一. 8种内置基础类型.ts二. void、never、any、unknown类型void类型never类型any类型unknown类型总结:void和any在项目中是比较常见的,never和unknown不常用。 三. 数组和函数类型定义.ts 一. 8种内置基础类型.ts /* eslint-disable typescrip…

vivado 路径分段

路径分段 与其他XDC约束不同,set_max_delay命令和set_min_delay在-from和-to选项的情况下,命令可以接受无效起始点列表或端点。当指定了无效的起始点时,正时发动机停止正时的传播通过该节点,使该节点成为有效的起点。 在以下示例…

65.乐理基础-打拍子-前附点、后附点

内容来源于:三分钟音乐社 上一个内容:前八后十六、前十六后八拍子-CSDN博客 前附点指的是一个附点八分音符加一个十六分音符的节奏型,如图1。 后附点指的是一个十六分音符加一个附点八分音符的节奏型,如图2。 前附点、后附点这两…

QLabelQPushButton和QLineEdit

QLabel 设置文件格式字体颜色背景 源码 设置图片 源码 设置gif 设置文本 源码 富文本 (Rich Text): 格式化选项:富文本支持各种格式化选项,如字体样式(粗体、斜体)、字体大小、颜色、超链接、图片插入、列表、表格等。文件格式&a…

基于ssm的企业在线培训系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装企业在线培训系统软件来发挥其高效地信息处理的作用&#x…

TransNeXt:稳健的注视感知ViT学习笔记

论文地址:https://arxiv.org/pdf/2311.17132.pdf 代码地址: GitHub - DaiShiResearch/TransNeXt: Code release for TransNeXt model 可以直接在ImageNet上训练的分类代码:GitHub - athrunsunny/TransNext-classify 代码中读取数据的部分修改…

低信噪比环境下的语音端点检测

端点检测技术 是 语音信号处理 的关键技术之一为提高低信噪比环境下端点检测的准确率和稳健性,提出了一种非平稳噪声抑制和调制域谱减结合功率 归一化 倒谱距离的端点检测算法 1 端点检测 1-1 定义 定义:在 存在背景噪声 的情况下检测出 语音的起始点和…

关于Java并发、JVM面试题

前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 并发 进程与线程的区别 线程属于进程,进程可以拥有多个线程。进程独享…

TDengine 公布 2023 年发展“成绩”,六大亮点引人瞩目

今天,我们进行了 2023 年重大成就和发展成绩盘点,主要归纳为产品创新、市场发展、开源社区、生态建设、活动布道与奖项荣誉六大维度。在元旦前夕,我们也想把这份“2023 年成绩单”分享给所有关注 TDengine 的朋友们。 在今年,最值…