MySQL LEFT JOIN 性能优化策略

news/2024/12/20 6:35:34/

文章目录

    • 写在文章开头
    • 详解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.ppmy.cn/news/1556588.html

相关文章

排序算法深度好文(图解 + 代码解析 + 误区 QA )——学排序看这一篇就够了!!!

排序算法 一、概述 1. 内部排序 (1) 冒泡排序 (2) 选择排序 a. 简单选择排序 b. 堆排序 (3) 插入排序 a. 直接插入排序 b. 希尔排序 (4) 快速排序 快速排序 hoare 版本 快速排序挖坑法 优化一随机化快速排序 优化二中位数三分法 (5) 归并排序 (6) 基数排序 2. …

1095. 格子图2

题目描述 给出一个 n ∗ m n*m n∗m的格子图,你从左上角 ( 0 , 0 ) (0,0) (0,0)出发,每次只能向右走或者向下走,问有多少种方法能走到 ( n , m ) (n,m) (n,m)这个格子? 输入 一行,两个整数 n n n, m m m,其中 n < = 1000000 n<=1000000 n<=

【机器学习】乱象中寻序,虚实间求真:统计学连接数据与真理的桥梁

文章目录 统计学基础&#xff1a;揭开机器学习的数学面纱前言一、统计学的核心概念1.1 描述统计1.1.1 集中趋势的测量1.1.2 离散程度的测量1.1.3 数据分布与偏态 1.2 推断统计1.2.1 样本与总体1.2.2 假设检验1.2.3 置信区间 二、推断统计&#xff1a;从样本到总体的桥梁2.1 样本…

HCIA-Access V2.5_3_1_1_VLAN技术原理_VLAN概述_VLAN产生的原因

本章导读 接入网设备大部分工作在二层网络&#xff0c;VLAN的产生为传统的LAN网络注入了新的活力&#xff0c;引起了LAN应用的一场变革。 本章介绍了在交换机中怎样配置VLAN&#xff0c;详细描述了VALN数据帧在交换机与交换机之间传递过程中的变化情况。 你可以带着这些问题…

特征维度远大于样本量时候的过拟合问题

为什么特征维度远大于样本量会导致过拟合&#xff1f; 维度灾难 当特征维度远大于样本量时&#xff0c;会出现所谓的"维度灾难"(curse of dimensionality)。在高维空间中&#xff0c;数据变得非常稀疏&#xff0c;模型有太多的"自由度"来拟合这些稀疏的数…

CommandLineRunner 和 InitializingBean初始化

CommandLineRunner 和 InitializingBean 都是 Spring 框架中用于初始化 Bean 的机制&#xff0c;但它们有不同的使用场景和特点。 CommandLineRunner 作用&#xff1a; CommandLineRunner 是一个接口&#xff0c;它定义了一个方法 run(String... args)&#xff0c;这个方法会…

114. 二叉树展开为链表(java)标记一下

题目描述&#xff1a; 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序…

【系统】Mac crontab 无法退出编辑模式问题

【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因&#xff1a;2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…