索引及练习
1.索引
📖什么是索引?
1. 索引是对数据库一列或者多列的值进行排序的一种结构。2. 索引的建立会大大提高 mysql 的检索速度。3. 如果想高效的使用 mysql, 而且数据量大时,需要花费事件去设计索引,建立优秀的索引规则,或优化 sql 语句📖优缺点:
优点 :1. 索引减少了服务器需要扫描的数据量,加快了检索的速度,这就是使用索引的主要原因2. 通过创建唯一索引,可以保证数据表中每一行数据的唯一性3. 索引可以帮助服务器避免排序和创建临时表缺点 :创建索引和维护索引,需要成本,随着数据量的增加成本需要增加。它会占用物理空间,除了数据表占用的空间外,每一个索引都需要占用一定的物理空间,特别是聚簇索引,更会占用大量空间对数据表数据操作 ( 删除、修改、增加 ) 时,索引需要动态维护,降低了整个维护速度如果具备大量重复数据时,没有建立索引的必要了。对于非常小的表,没有必要!! mysql 5.5 及之后的版本,默认使用 innodb 引擎,因此默认会添加主键索引,底层为 B+Tree📘分类:
1. 根据底层 : 聚簇索引 ( 主键 ) 和非聚簇索引 ( 其他索引 )---- 后续面试时,一定要冲刺这部分聚簇索引按照数据存放的物理位置为顺序 --- 多行检索快非聚簇索引对单行的检索特别快2. 根据作用点 : 主键索引、唯一索引、单列索引、多列索引、全文索引等等📖 索引的设计原则1. 选择惟一性索引2. 为经常需要排序、分组和联合操作的字段建立索引3. 为常作为查询条件的字段建立索引4. 限制索引的数目5. 尽量使用数据量少的索引6. 尽量使用前缀来索引7. 删除不再使用或者很少使用的索引📖 索引的使用
1. 查询索引show index from 表名 show index from 表名\G --- 竖着显示详细信息2. 创建索引create index 索引名 on 表名(字段名) -- 1.创建普通索引 -单列索引 create unique index 索引名 on 表名(字段名) -- 2.创建唯一索引 create index 索引名 on 表名(字段1,字段n) -- 3.多列索引 create fulltext index 索引名 on 表名(字段名(只能为char\varchar\text)) -- 4.全 文索引 Create table index6( -- 5.空间索引 Id int, Space geometry not null, Spatial index index6_sp(space) )engine=myisam; 建空间索引时,表的存储引擎必须是myisam类型,而且索引字段必须有非空约束。空间数据类型包 括 geometry,point,linestring和polygon类型等。平时很少用到。3. 删除索引drop index 索引名 on 表名4. 执行计划 -- 看索引是否命中explain 查询sql 1 EXPLAIN分析结果的含义: table:这是表的名字。 type:连接操作的类型,ALL、index、range、 ref、eq_ref、const、system、NULL(从左到 右,性能从差到好) possible_keys:可能可以利用的索引的名字 Key:它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。 key_len:索引中被使用部分的长度,以字节计。 ref:它显示的是列的名字(或单词“const”),MySQL将根据这些列来选择行 rows:MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1 Extra:这里可能出现许多不同的选项,其中大多数将对查询产生负面影响
索引练习
题目
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course(Cno,Cname,) 课程号,课程名 Cno为主键
学生选课表:SC(Sno,Cno,Score) 学号,课程号,成绩 Sno,Cno为主键
1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是“计算机”
2.修改student 表中年龄(age)字段属性,数据类型int 改变为smallint 的主键索引,索引名为SC_INDEX
3.为SC表建立按学号(sno)和课程号(cno)组合的升
4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩
实现过程
1. 创建 Student 表
CREATE TABLE Student (Sno CHAR(10) NOT NULL PRIMARY KEY, -- 学号为主键Sname VARCHAR(50) NOT NULL UNIQUE, -- 姓名不能重复Ssex ENUM('男', '女') NOT NULL, -- 性别限制为男或女Sage INT, -- 年龄Sdept VARCHAR(50) DEFAULT '计算机' -- 所在系默认值为计算机
);
2. 修改 Student 表中 Sage 字段的数据类型为 SMALLINT
ALTER TABLE Student
MODIFY COLUMN Sage SMALLINT;
3. 创建 Course 表
CREATE TABLE Course (Cno CHAR(10) NOT NULL PRIMARY KEY, -- 课程号为主键Cname VARCHAR(100) NOT NULL -- 课程名
);
4. 创建 SC 表并设置联合主键与索引
CREATE TABLE SC (Sno CHAR(10) NOT NULL, -- 学号Cno CHAR(10) NOT NULL, -- 课程号Score FLOAT, -- 成绩PRIMARY KEY (Sno, Cno), -- 联合主键INDEX SC_INDEX (Sno ASC, Cno ASC) -- 联合升序索引,索引名为 SC_INDEX
);
5. 创建视图 stu_info
CREATE VIEW stu_info AS
SELECT Student.Sname AS 姓名,Student.Ssex AS 性别,Course.Cname AS 课程名,SC.Score AS 成绩
FROM SC
JOIN Student ON SC.Sno = Student.Sno
JOIN Course ON SC.Cno = Course.Cno;相关文章:
索引及练习
1.索引 📖什么是索引? 1. 索引是对数据库一列或者多列的值进行排序的一种结构。 2. 索引的建立会大大提高 mysql 的检索速度。 3. 如果想高效的使用 mysql, 而且数据量大时,需要花费事件去设计索引,建立优秀的索引规 则&a…...
java版嘎嘎快充汽车单车充电系统源码系统jeecgboot
汽车使用云快充1.6 1.5协议,单车用的铁塔协议 前端uniapp、后端jeecgbootvue2...
vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果
说明 vue路由切换时,当前页面左侧和右侧容器分别从两侧滑出,新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器,通过<transition>组件,效果只能对页面根容器有效…...
MacOS编译hello_xr——记一次CMake搜索路径限制导致的ANDROID_NATIVE_APP_GLUE not found
首先,由于之前使用过Unity, 系统已经装好了android SDK和NDK, 所以在hello_xr文件夹下, 用local.properties文件来设置系统中二者的路径: sdk.dir/Applications/Unity/Hub/Editor/2022.3.48f1c1/PlaybackEngines/AndroidPlayer/SDK/ # ndk.dir/Applications/Unity/Hub/Editor/…...
基于NI Vision和MATLAB的图像颜色识别与透视变换
1. 任务概述 利用LabVIEW的NI Vision模块读取图片,对图像中具有特征颜色的部分进行识别,并对识别的颜色区域进行标记。接着,通过图像处理算法检测图像的四个顶点(左上、左下、右上、右下),并识别每个顶点周…...
【Linux:IO多路复用(select、poll函数)
目录 什么是IO多路复用? select: 参数介绍: select函数返回值: fd_set类型: 内核如何更新集合中的标志位 处理并发问题 处理流程的步骤: poll: poll的函数原型: 参数介绍: select与p…...
计数排序(C语言)
一、步骤 1.首先,遍历数组统计出相同元素出现的次数 2.根据统计的结果将序列收回到原来的数组 方法:我们可以建立一个临时数组用来存储元素出现的次数,然后用该数组的下标表示该元素(即假设i为临时数组的下标,a[i]为…...
LabVIEW弧焊参数测控系统
在现代制造业中,焊接技术作为关键的生产工艺之一,其质量直接影响到最终产品的性能与稳定性。焊接过程中,电流、电压等焊接参数的精确控制是保证焊接质量的核心。基于LabVIEW开发的弧焊参数测控系统,通过实时监控和控制焊接过程中关…...
Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报
背景 项目中首页列表页需要统计每个item的曝光情况,给产品运营提供数据报表分析用户行为,于是封装了一个通用的列表Item曝光工具,方便曝光埋点上报 源码分析 核心就是监听RecyclerView的滚动,在滚动状态为SCROLL_STATE_IDLE的时…...
【Linux】内核模版加载modprobe | lsmod
modprobe modprobe 是一个用于加载和卸载 Linux 内核模块的命令。它不仅能够加载单个模块,还能处理模块之间的依赖关系,确保所有依赖的模块都被正确加载。以下是一些关于 modprobe 命令的基本用法和常见选项的详细介绍。 基本语法 modprobe [option…...
Android从Drawable资源Id直接生成Bitmap,Kotlin
Android从Drawable资源Id直接生成Bitmap,Kotlin val t1 System.currentTimeMillis()val bmp getBmpFromDrawId(this, R.mipmap.ic_launcher_round)Log.d("fly", "1 ${bmp?.byteCount} h${bmp?.height} w${bmp?.width} cost time${System.currentTimeMillis…...
蓝桥杯——数组
1、移动数组元素 package day3;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] arr {1,2,3,4,5,6};int k 2;int[] arr_new f(arr,k);for (int i : arr_new) {System.out.print(i",");}//或System.out.println();St…...
在Flutter中,禁止侧滑的方法
在Flutter中,如果你想禁用侧滑返回功能,你可以使用WillPopScope小部件,并在onWillPop回调中返回false来阻止用户通过侧滑返回到上一个页面。 class DisableSwipePop extends StatelessWidget {overrideWidget build(BuildContext context) {…...
黑盒测试案例设计方法的使用(1)
黑盒测试用例的设计是确保软件质量的关键步骤之一。 一、等价类划分法 定义:把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。 步骤:…...
第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令
文章目录 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令客户端OPEN命令 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令 客户端OPEN命令 客户端OPEN命令与服务器端OPEN命令只有一个方面的不同:第一个设备参数必须指定要连接的主机。要指定主机…...
pycharm报错:no module named cv2.cv2
1、问题概述? 在项目中报错no module named cv2.cv2,就会导致import cv2 as cv无法使用。 需要安装opencv-python,一个开源的计算机视觉库。 2、解决办法? 【第一步:如果当前环境中已经安装,先卸载】 有时候会出现…...
Android音视频直播低延迟探究之:WLAN低延迟模式
Android WLAN低延迟模式 Android WLAN低延迟模式是 Android 10 引入的一种功能,允许对延迟敏感的应用将 Wi-Fi 配置为低延迟模式,以减少网络延迟,启动条件如下: Wi-Fi 已启用且设备可以访问互联网。应用已创建并获得 Wi-Fi 锁&a…...
docker 部署freeswitch(非编译方式)
一:安装部署 1.拉取镜像 参考:https://hub.docker.com/r/safarov/freeswitch docker pull safarov/freeswitch 2.启动镜像 docker run --nethost --name freeswitch \-e SOUND_RATES8000:16000 \-e SOUND_TYPESmusic:en-us-callie \-v /home/xx/f…...
OpenHarmony的公共事件
OpenHarmony的公共事件 公共事件简介 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件&#…...
深度学习transformer
Transformer可是深度学习领域的一个大热门呢!它是一个基于自注意力的序列到序列模型,最初由Vaswani等人在2017年提出,主要用于解决自然语言处理(NLP)领域的任务,比如机器翻译、文本生成这些。它厉害的地方在…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
