mysql —案例复杂查询+索引使用+DBeaver中创建索引

news2024/11/18 17:37:10

前言

接上章 我们 对一个简单的选课功能进行 设计分析

实际上在工作中 拿到一个需求,也是这样的一个分析过程

一个份 需求文档+原型 出来,只要是你负责这个模块,就需要你自己建表建库,设计接口文档,也许现在有的公司会有一个带你的大哥会帮你建表建库【甚至接口文档都帮你写好了,你只需要按照接口进行开发】,那也只是初步的【实习生】,到后面还是得靠自己

再有的公司是需要开发人员写概要设计(里面就包含数据库设计)的 , 但总的来说是八九不离十,分析步骤还是一样的

案例

我们一步一步来,先造一些数据

1. teacher_info

--  Auto-generated SQL script #202211150937
INSERT INTO elective.teacher_info (id,code,name,sex,professional,create_id,create_time,update_id,update_time)
  VALUES (2,'LS20221115001','李四',0,'副教授',1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25');

在这里插入图片描述

2. student_info

INSERT INTO elective.student_info (id,code,name,sex,class_name,create_id,create_time,update_id,update_time,age)
  VALUES (2,'XS20221115001','学生2',0,'物联网工程二班',1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25',23);

在这里插入图片描述

3.course_info

比如

老师张三 有两门课 一门微积分 一门 java基础

老师李四 有一门课 SpringCloud概论

INSERT INTO elective.course_info (id,teacher_id,course_name,course_code,course_type,course_score,create_id,create_time,update_id,update_time)
VALUES (1,1,‘微积分’,‘WJF2022’,‘数学’,4,1,‘2022-11-15 10:11:25’,1,‘2022-11-15 10:11:25’);

在这里插入图片描述

4 .student_course_info

选课表

学生1 选了张三 老师的 微积分 + 李四老师的 SpringCloud概论

学生2 选了张三 老师的 java基础

--  Auto-generated SQL script #202211150955
INSERT INTO elective.student_course_info (id,stu_id,cou_id,score,create_id,create_time,update_id,update_time)
  VALUES (2,1,3,95,1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25');

在这里插入图片描述

5. 模拟查询

1. 列出学生1选择的课程详细信息(包括学生名字,课程名称,授课老师,分数)

select
  si.name as stuName,
  ci.course_name as courseName,
  ti.name  as teacherName,
  sci.score 
from
  student_course_info as sci  
left join student_info si on sci.stu_id = si.id
left join course_info ci on ci .id  = sci.cou_id
left join teacher_info ti on ti.id  = ci.teacher_id 
where sci.stu_id = 1

as:取别名 可省略

在这里插入图片描述

2. 查询张三老师的所有课程

select 
  ci.course_name as teacherName,
  ti.name 
   from   course_info ci  
   left join teacher_info ti on ci.teacher_id  = ti.id 
   where ci.teacher_id =1

在这里插入图片描述
3. 查询所有学生选修的总学分,并且从高到低排序

desc:降序

asc: 升序

select
  si.name,
  sum(ci.course_score) as sumScore
from
  student_course_info sci
left join student_info si on sci.stu_id = si.id
left join course_info ci on ci.id = sci.cou_id
group by
  sci.stu_id
order by
  sumScore desc

在这里插入图片描述
6. 索引Type类型

我们可以使用explain来 查看索引类型

就比如 2. 查询张三老师的所有课程 这个sql 语句
在这里插入图片描述
在这里插入图片描述
type 列有 all 跟 const 两个类型,possible keys 就是我们使用到的索引,可以看到 类型为 all 的 索引为 null ,const 就是主键

这边有个 索引类型的级别:

system > const > eq_ref > ref > range > index > all

越左边 查询效率越快 ,all效率最低

没有索引的就是all,需要进行优化

这时候我们就需要给 course_info 加上索引了

where 条件后面的 teacher_id 需要加上索引

在这里插入图片描述
在这里插入图片描述
记得 Ctrl+S 保存

在这里插入图片描述
在这里插入图片描述
再来查询看看

在这里插入图片描述
可以看到级别变了,变成了ref ,可能现在数据量少没看出效率变化,只要数据量一多,就可以明显的感受到效率的提升不是一星半点

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

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

相关文章

AIGC|FineTune工程之LoRa高效参数微调

徐辉 | 后端开发工程师 一、引言 随着深度学习和自然语言处理技术的快速发展,大型预训练语言模型(如GPT、Vicuna、Alpaca、Llama、ChatGLM等)在各种应用场景中取得了显著的成果。然而,从零开始训练这些模型需要大量的计算资源和…

Cristiano Linux学习小结

一、linux基础 1.1 基本概述 1、Linux组成:内核 Shell 文件系统 应用程序 2、内核(Kernel),即核心程序。实现操作系统的基本功能(进程管理、内存管理、进程间通信、虚拟文件系统和网络接口),决定着系统的性能和稳定性。…

递归典型例题:汉诺塔问题

文章目录 1. 什么是汉诺塔2. 汉诺塔的解题步骤3. 代码实现汉诺塔 1. 什么是汉诺塔 1. 汉诺塔的来源 一位法国数学家曾编写过一个印度的古老传说:在世界中心拿勒斯的圣庙里边,有一块黄铜板,上边插着三根宝柱。印度教的主神梵天在创造世界的时…

div绑定键盘点击事件

为箭头绑定绑定键盘方向键 <div class"toggle-nav"><spanv-if"leftToggleSt"click"toggleGoods(1)"keyup.left"toggleGoods(1)"class"toggle-left"><a-icon type"left" class"icon" /&…

Linux系统设置

Linux的系统设置 01 选择“Install CentOS7” 02 选择安装界面的语言 03 选择时区&#xff0c;这里选择上海 04 选择安装类型&#xff0c;选择最小安装即可&#xff0c;不需要图形界面与其他的组件 05 选择安装位置&#xff0c;自定义分区 06 我要配置分区&#xff0c;进行…

ARS408毫米波雷达使用记录

参考&#xff1a;ARS_408毫米波雷达数据解析学习记录 感谢博主的分享&#xff08;https://blog.csdn.net/weixin_49401384&#xff09; 雷达can消息解析&#xff08;通用can解析思路&#xff09; socketcan学习can总线 毫米波雷达can协议解读RadarCfgRadarState 代码基本是关于…

Python接口自动化核心模块 - 数据库操作和日志

进行接口测试时&#xff0c;我们需要连接到数据库中&#xff0c;对数据源进行备份、还原、验证等操作。 Python连接数据库常见模块 MysqlDB python2时代最火的驱动库。基于C开发&#xff0c;对windows平台不友好。现在已经进入python3时代&#xff0c;基本不再使用 MysqlCl…

干农活太累了,尤其是对一位22女孩来说

干农活太累了&#xff0c;尤其是对一位22女孩来说。要是能够通过电商来销售农产品可以大大减轻干农活的负担。在重庆荣昌的一个小村庄里&#xff0c;一个名叫杨儿杨的00后女孩&#xff0c;正通过抖音电商&#xff0c;书写着她自己的故事。杨儿杨的生活并不容易。5岁前&#xff…

数据库 --- mysql(01)

MYSQL 1、数据库简介 数据&#xff1a;描述事物的符号记录&#xff0c; 可以是数字、 文字、图形、图像、声音、语言等&#xff0c;数据有多种形式&#xff0c;它们都可以经过数字化后存入计算机。 数据库&#xff1a;存储数据的仓库&#xff0c;是长期存放在计算机内、有组…

武大+上交提出 BatGPT:创新性采用双向自回归架构,可预测前后token

进NLP群—>加入NLP交流群 本论文介绍了一种名为BATGPT的大规模语言模型&#xff0c;由武汉大学和上海交通大学联合开发和训练。 该模型采用双向自回归架构&#xff0c;通过创新的参数扩展方法和强化学习方法来提高模型的对齐性能&#xff0c;从而更有效地捕捉自然语言的复杂…

Seata 分布式事务的中间件Seata设计和实现方案

文章目录 分布式事务的中间件SeataSeata AT 模式-默认模式前提整体机制写隔离读隔离 Seata XA 模式前提整体机制工作机制 Seata TCC 模式Seata Saga 模式概述缺点&#xff1a; Saga的实现外传 分布式事务的中间件Seata Seata 是一款开源的分布式事务解决方案&#xff0c;致力于…

element ui组件的自定义类名样式不生效

element ui中&#xff0c;类似描述列表这种组件 会提供自定义类名属性 需要注意&#xff0c;样式不能写在<style scoped>标签中&#xff0c;会被vue自动加上data-v属性&#xff0c;导致样式失效。 必须写在<style>标签里

C++进阶—红黑树详解及map、set封装(3)

目录 1. 红黑树的概念 2. 红黑树的性质 3. 红黑树节点的定义 4. 红黑树性质分析 5. 红黑树插入节点简要分析&#xff08;新插入节点的parent为红色&#xff09; 5.1 简要分析1-变色&#xff1a; 5.2 简要分析2-变色旋转 5.3 简要分析总结 6. 红黑树插入节点详细分析 …

Linux下载安装Redis(Ubuntu系统)

相比于 Windows 系统而言&#xff0c;Redis 更适合于在 Linux 系统上使用&#xff0c;这是由 Redis 的底层机制决定的。下面介绍一下如何在 Linux 发行版 Ubuntu 系统上安装 Redis 数据库。 了解Redis版本 Redis 版本号采用国际标准惯例&#xff0c;即“主版本号.副版本号.补…

Linux分布式应用 Zabbix监控软件 安装

zabbix 是什么&#xff1f; ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 ●…

第七届御网杯re的wp_Ba0

re拿了一血和二血&#xff0c;感觉挺简单的&#xff08; 1、easycpp 使用IDA进行linux动调 主要异或加密&#xff0c;还原即可 1 2 3 4 flag1[0x23,0x21,0x27,0x22,0x27,0x27,0x25,0x2B,0x2D,0x26,0x23,0x23,0x22,0x26,0x27,0x2E] flag[18,19,20,22,18,17,18,19,20,22,18,17…

visual stodio 编译

一、生成文件复制一份到其他路径 选到这里&#xff0c;添加命令&#xff1a; PlatformName 平台版本 x86/x64 Configuration 配置生成目录 Debug/Release OutputPath 生成路径 Debug/Release copy /y "$(OutputPath)$(ProjectName).dll" "E:\Project\UseDll…

LED点阵动画

23-7-6 #include<regx52.h> #include "Delay.h" #include "Matrix.h" /*点阵屏显示动画*/ unsigned char code Animation[]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x08,0x08,0x08,0xff,0x00,0x0e,0x15,0x15,0x15,0x08,0x00,0x7e,0x01,0x02,…

用户数据报协议 UDP

文章目录 一、UDP数据报格式二、UDP校验和计算1.伪报头2.伪报头结构3.检验和计算 三、UDP特点 UDP 的特点&#xff1a; 无连接、不可靠&#xff0c;运行快捷&#xff1a; 在传输报文之前不需要建立连接&#xff0c;因此减少了协议开销与传输延时。此外&#xff0c;除了对报文提…

2023年湖北成人高考学习全流,今天启程别详细给大家介绍!

2023年湖北成人高考学习全流&#xff0c;今天启程别详细给大家介绍&#xff01; 成人高考可以准备起来了&#xff0c;那么你了解成人高考的学习流程吗&#xff1f; 一、考前准备 确认好报考条件&#xff0c;准备报名资料&#xff0c;拿到书本教材开始复习备考。 湖北成人高考报…