MySQL LEFT JOIN 性能优化策略

文章目录

    • 写在文章开头
    • 详解MySQL left join
      • 场景描述
      • 讲讲join的原理
      • 能不能说说这个LEFT JOIN如何加索引
      • left join on 左右字段是否都需要加索引?为什么?
      • 你觉得针对联表查询还有那些优化技巧
    • 小结
    • 参考

写在文章开头

连接查询算是日常比较常用的数据库关联关键字涉及左外连接、右外连接、内连接三种连接方式,本文将从MySQL 8.0的角度针对连接查询和优化进行深入解析,希望对你有帮助。

Hi,我是 sharkChili ,是个不断在硬核技术上作死的技术人,是 CSDN的博客专家 ,也是开源项目 Java Guide 的维护者之一,熟悉 Java 也会一点 Go ,偶尔也会在 C源码 边缘徘徊。写过很多有意思的技术博客,也还在研究并输出技术的路上,希望我的文章对你有帮助,非常欢迎你关注我的公众号: 写代码的SharkChili

同时也非常欢迎你star我的开源项目mini-redis:https://github.com/shark-ctrl/mini-redis

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注 “加群” 即可和笔者和笔者的朋友们进行深入交流。

详解MySQL left join

场景描述

我们现在有一个驱动表customer,它存储客户id、姓名以及出生日期,默认情况下id是主键,没有任何索引,对此我们给出DDL语句:

CREATE TABLE `customer` (`id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(100) DEFAULT NULL,`birthday` datetime DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

customer有一张关联表,c_id记录着与其关联数据的id,并用available_balance记录客户余额,对应DDL如下,可以看到此时我们没有添加任何索引:


CREATE TABLE `customer_balances` (`id` bigint NOT NULL AUTO_INCREMENT,`c_id` bigint NOT NULL,`available_balance	

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中软高科身份证云解码金融(银行)解决方案介绍

多年来,中软高科一直深耕身份证云解码领域,对身份证云解码应用于金融(银行),进行了大量且深入的研究。从长期调研来看,金融(银行)的痛点需求主要有: 传统身份证解码设备…

【LeetCode】每日一题 2024_12_19 找到稳定山的下标(模拟)

前言 每天和你一起刷 LeetCode 每日一题~ 最近力扣的每日一题出的比较烂,难度过山车,导致近期的更新都三天打鱼,两天断更了 . . . LeetCode 启动! 题目:找到稳定山的下标 代码与解题思路 先读题:最重要…

SpringBoot开发——详解Tomcat线程池默认最大支持200并发

文章目录 1、SpringBoot 应用可以同时并发处理多少请求2、Tomcat线程池3、底层源码3.1 runWorker3.2 workQueue.offer 4、总结 1、SpringBoot 应用可以同时并发处理多少请求 Q:经典面试题,SpringBoot 应用可以同时并发处理多少请求? A&#…

Linux限制root 用户的远程登录(安全要求)

前言:现在基本用户主机都不允许使用root来操作,所以本文通过创建新用户,并限制root用户的ssh来解决这个问题 1. 创建新账户 aingo 首先,使用 root 账户登录系统。 sudo useradd aingo设置 aingo 账户密码: sudo pa…

计算机网络之王道考研读书笔记-2

第 2 章 物理层 2.1 通信基础 2.1.1 基本概念 1.数据、信号与码元 通信的目的是传输信息。数据是指传送信息的实体。信号则是数据的电气或电磁表现,是数据在传输过程中的存在形式。码元是数字通信中数字信号的计量单位,这个时长内的信号称为 k 进制码…

谁说C比C++快?

看到这个问题,我我得说:这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子: // C风格 char* str (char*)malloc(100…

【Unity3D】无限循环列表(扩展版)

基础版:【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…

Hive SQL 查询所有函数

-- 显示所有的函数 show functions; -- 对函数year进行解释 desc function year; -- 对函数year进行详细解释,并举例说明 desc function extended year;– 对函数year进行解释 desc function year; – 对函数year进行详细解释,并举例说明 desc functio…

Android13 系统签名应用编译调试说明

Android13 系统签名应用编译调试说明 文章目录 Android13 系统签名应用编译调试说明一、前言二、系统签名应用调试步骤1、新建一个应用,确保可以正常编译出APK2、获取系统签名文件3、Android Studio 编译安装系统权限应用(1)导入签名文件生成…

基于Spring Boot的医院质控上报系统

一、系统背景与意义 医院质控上报系统旨在通过信息化手段,实现医院质量控制的标准化、流程化和自动化管理。该系统能够帮助医院实时监控医疗质量数据,及时发现和处理潜在的质量问题,从而确保医疗服务的安全性和有效性。同时,系统…

将java项目部署到linux

命令解析 Dockerfile: Dockerfile 是一个文本文件,包含了所有必要的指令来组装(build)一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…

LeetCode:226.翻转二叉树

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:226.翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 …

Webpack学习笔记(2)

1.什么是loader? 上图是Webpack打包简易流程,webpack本身只能理解js和json这样的文件,loader可以让webpack解析其他类型文件,并且将文件转换成模块供我们使用。 test识别出那些文件被转换,use定义转换时使用哪个loader转换 上图…

【WebDriver】浏览器驱动下载及其配置

一、Windows电脑环境搭建-Chrome浏览器 行业内,Chrome (谷歌) 浏览器对于自动化程序来讲是比较稳定的. 自动化程序推荐使用 Chrome 浏览器的原因有几个: 开发者工具:Chrome 提供强大的开发者工具,方便调试和测试自动化脚本。 稳…

list使用

目录 list介绍 list使用 list创建 list迭代器 容量操作 元素访问 修改元素 其他操作 list介绍 ● list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 ● list的底层是双向链表结构,双向链表中每个元素存…

【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!

还记得第一次使用ChatGPT时,那种既兴奋又困惑的心情吗?我是从一个对AI一知半解的普通用户,逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就,而是通过不断的探索和实践,掌握了一系列高效使用的技巧。今天&#…

windows 使用python共享网络给另外一个网卡

# -*- coding: utf-8 -*- import subprocessdef open_share(to_shared_adapter, from_shared_adapter):"""打开以太网的网络共享:return: None"""powershell_script f"""# Register the HNetCfg library (once)# regsvr32 hnetc…

devops-部署Harbor实现私有Docker镜像仓库

文章目录 概述下载配置安装安装后生成的文件使用和维护Harbor参考资料 概述 Harbor是一个开源注册中心,它使用策略和基于角色的访问控制来保护工件,确保镜像被扫描并且没有漏洞,并将镜像签名为可信的。Harbor是CNCF的一个毕业项目&#xff0…

Java深拷贝和浅拷贝区别?

大家好,我是锋哥。今天分享关于【Java深拷贝和浅拷贝区别?】面试题。希望对大家有帮助; Java深拷贝和浅拷贝区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Java中,深拷贝(Deep Copy)和浅拷贝&am…

Linux文件属性 --- 硬链接、所有者、所属组

三、硬链接数 1.目录 使用“ll”命令查看,在文件权限的后面有一列数字,这是文件的硬链接数。 对于目录,硬链接的数量是它具有的直接子目录的数量加上其父目录和自身。 下图的“qwe”目录就是“abc”目录的直接子目录。 2.文件 对于文件可…