索引优化全攻略:提升

devtools/2025/2/6 5:11:04/

昨天我们聊到了索引失效的常见场景,今天我们接着深入探讨如何优化SQL中的关联查询,特别是左外连接、内连接以及JOIN语句的优化技巧。

我们会结合实际代码,带你更直观地理解JOIN的原理,并介绍几种不同的连接方式,比如简单嵌套循环连接、索引嵌套循环连接和块嵌套循环连接。掌握这些技巧后,你会发现优化多表查询的性能变得更加得心应手。

除此之外,我们还会讨论哈希连接和子查询优化,帮助你全面提升SQL查询的效率,让你对SQL优化有更清晰的认识。

1. 关联查询优化

1.1 数据准备

# 学生表
CREATE TABLE IF NOT EXISTS `student` (`student_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,   -- 学生ID`class_num` INT(10) UNSIGNED NOT NULL,                     -- -- 班级号码PRIMARY KEY (`student_id`)
);
​
​
# 班级表
CREATE TABLE IF NOT EXISTS `class` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,      -- 班级ID 主键`class_num` INT(10) UNSIGNED NOT NULL,             -- 班级号码PRIMARY KEY (`id`)
);
​
留意一下这里没有使用主键进行关联。因为会走索引,下面会解释。

使用储存过程向向这两张表中插入50条数据

#向分类表中添加20条记录
INSERT INTO student (class_num) VALUES (FLOOR(1 +(RAND() * 20)));
​
#向图书表中添加20条记录
INSERT INTO class(class_num) VALUES (FLOOR(1 +(RAND() * 20)) );

http://www.ppmy.cn/devtools/156460.html

相关文章

Azure DevOps Server:集成奇安信开源卫士(OpenSourceSafe)

1. 概述 奇安信开源卫士是奇安信公司推出的一款开源组件检测工具,主要用于识别和管理软件项目中的开源组件及其潜在的安全风险。它支持多种编程语言和框架,如Java、Python、JavaScript等,通过集成CI/CD工具,可以在软件开发和测试阶…

IM 即时通讯系统-46-OpenIM 提供了专为开发者设计的开源即时通讯解决方案

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术,提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…

深度解析近期爆火的 DeepSeek

最近,AI 领域有个名字频繁出现在大众视野 ——DeepSeek,它的火爆程度就像一颗投入平静湖面的巨石,激起千层浪。今天,咱们就来深入了解一下这个 “AI 新星”。 官网:DeepSeek - 探索未至之境 DeepSeek 是什么 DeepSeek…

2.5学习总结

今天看了二叉树&#xff0c;看的一脸懵&#xff0c;写了两道题 P4913&#xff1a;二叉树深度 #include <stdio.h> #include <stdlib.h> struct hly {int left;int right; }tree[1000005]; int hulingyun(int x) {if(x0)return 0;return 1max(hulingyun(tree[x].le…

mac安装wireshark

mac启动wireshark时&#xff0c;提示没有权限抓包&#xff0c;报错内容如下&#xff1a; “The capture session could not be initiated on interface ‘en0’ (You don’t have permission to capture on that device). Please check to make sure you have sufficient perm…

python-leetcode-路径总和

112. 路径总和 - 力扣&#xff08;LeetCode&#xff09; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:de…

6. 【Vue实战--孢子记账--Web 版开发】-- 主币种设置

从这篇文章开始我们将一起实现孢子记账的功能&#xff0c;这篇文章实现主币种设置。这个功能比较简单&#xff0c;因此我们从这个功能开始做。 一、功能 根据项目前期的需求调研&#xff0c;用户需要在设置主币种的时候查看汇率信息&#xff08;别问为什么有这么个需求&#…

力扣动态规划-20【算法学习day.114】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.网格中的最小路径代价 题目链接…