MySQL之索引及简单运用

索引:

什么是索引

  索引是数据库中一种非常重要的数据结构,用于帮助快速查询数据库表中的数据。它就像一本书的目录,能够让你快速定位到书中的某个具体章节或内容,而不需要一页一页地翻阅整本书。

  在数据库管理系统中,索引是对数据库表中一列或多列的值进行排序的一种结构,可以极大地提高数据检索的效率,减少数据库的I/O成本。通过使用索引,数据库系统可以不必扫描整个表来定位所需的数据,而是可以直接通过索引快速定位到数据的物理存储位置。

索引的特点:

索引的作用

  1. 提高数据检索效率:索引可以极大地加快数据检索的速度,特别是在处理大量数据时。
  2. 保证数据的唯一性:通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。
  3. 实现数据的参照完整性:使用外键作为索引,可以保证数据的一致性和完整性。
  4. 加速表与表之间的连接:在进行表的连接(JOIN)操作时,索引可以显著提高查询效率。
  5. 在排序和分组时提供帮助:通过索引,数据库系统可以更快地对数据进行排序和分组。

 

索引的类型

  • B树索引:最常见的索引类型,适用于全键值、键值范围或键值前缀查找。
  • 哈希索引:基于哈希表实现,只有精确匹配索引所有列的查询才有效。
  • 全文索引:用于在大量文本数据中搜索字符串。
  • 空间索引:用于地理空间数据类型。
  • 位图索引:适用于只有很少几种不同值的列,如性别、省份等。

索引的缺点

尽管索引可以显著提高查询效率,但它们也有一些缺点:

  1. 占用额外空间:索引需要占用物理存储空间。
  2. 降低写操作的性能:在表中插入、删除或更新数据时,索引也需要被相应地更新,这可能会降低写操作的性能。
  3. 优化器负担:数据库优化器在生成查询计划时需要考虑索引,这可能会增加其负担。

 索引的创建查看与删除

 创建索引

方式1:创建表的时候创建索引

create table 表名 (               字段名1 数据类型 [完整性约束条件…],              

                                            字段名2 数据类型 [完整性约束条件…],              

                                                [unique | fulltext | spatial]   index | key              

                                                [索引名] (字段名[(长度)] [asc | desc])                 );

方式2:在已经存在的表上创建索引

create [unique | fulltext | spatial] index 索引名 ON 表名 ( 字段名[(长度)] [asc | desc] );  

方法3:使用alter table语句来创建索引

alter  table 表名 add [unique | fulltext | spatial] index                    

                                                 索引名 (字段名[(长度)] [asc | desc]);  

查看索引

# 查询索引 show create table 表名 \G

# 查询某张表中索引情况 show index from table_name;

删除索引

drop index 索引名 on 表名 

索引的小实例

 准备实验所需要的数据库和表

# 新建数据库

create database mydb15_indexstu;

# 使用该数据库

use mydb15_indexstu;

# 新建student表

create table student( sno int primary key auto_increment, sname varchar(30) not null unique, ssex varchar(2)check (ssex='男'or ssex='女')not null, sage int not null, sdept varchar(10)default'计算机'not nul1);

# 新建course表

create table course(cno int primary key not null, cname varchar(20) not null);

# 新建sc表

create table sc(sno int not null, cno varchar(10) primary key not null, score intnot null);

 处理该表

1.修改student 表中年龄(sage)字段属性,数据类型由int 改变为smallint

alter table student modify sage smallint not null;

2.为Course表中Cno 课程号字段设置索引,并查看索引

alter table course add index index_cno(cno);

show create table course\G

 

3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 

CREATE UNIQUE INDEX SC_INDEX ON sc(sno, cno);

 4.创建一视图 stu info,查询全体学生的姓名,性别,课程名,成绩

create view stu_info as  select s.sname, s.ssex, c.cname, sc.score  from student s  join sc sc on s.sno = sc.sno  join course c on sc.cno = c.cno;

 5.删除所有索引

drop index index_cno on course;

drop index SC_INDEX on sc;

本次索引实验完成,索引更方便我们找到数据,可以大量节省运行时间,让我们更快速定位到想要的数据,本次索引不是很难,大家一定跟我一样都已经掌握了,敬请期待下一期吧!!!

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

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

相关文章

Linux下如何设置系统定时任务

在Linux系统中,用户可以使用cron工具来设置定时任务。cron是一个守护进程,用于在指定的时间间隔执行指定的命令或脚本。下面是在Linux系统中设置系统定时任务的步骤。 使用crontab命令编辑定时任务列表: crontab -e该命令会打开一个文本编辑…

设计模式 之 —— 单例模式

目录 什么是单例模式? 定义 单例模式的主要特点 单例模式的几种设计模式 1.懒汉式:线程不安全 2.懒汉式:线程安全 3.饿汉式 4.双重校验锁 单例模式的优缺点 优点: 缺点: 适用场景: 什么是单例模…

Highcharts 饼图:数据可视化的魅力

Highcharts 饼图:数据可视化的魅力 引言 在数据可视化的世界中,饼图作为一种经典且直观的图表类型,被广泛应用于各种领域。Highcharts,作为一个功能强大且易于使用的JavaScript图表库,为我们提供了创建精美饼图的便捷途径。本文将深入探讨Highcharts饼图的特点、应用场景…

VBA实例-从Excel整理数据到Word

实现目录 功能需求数据结构复制数据到新sheet并分类数据添加序号、日期、时间三列数据添加序号列添加时间列 将名称和类别复制到word文件中将参数5和参数9中的一个复制到word文件中 实例 功能需求 1、将原始数据中不要的数据剔除 2、原始数据中增加序号、日期和时间三列数据&a…

图片上传成功却无法显示:静态资源路径配置问题解析

1、故事的背景 最近,有个学弟做了一个简单的后台管理页面。于是他开始巴拉巴拉撘框架,写代码,一顿操作猛如虎,终于将一个简单的壳子搭建完毕。但是在实现功能:点击头像弹出上传图片进行头像替换的时候,卡壳…

三星Unpacked发布会即将举行:有新款折叠屏手机,还有智能戒指

随着7月的脚步渐近,科技界的目光再次聚焦于三星,它即将在法国巴黎举办今年的第二场Unpacked发布会。这不仅是一场新品的展示,更是三星对创新科技的一次深刻诠释。 从Galaxy Z Fold 6的全新设计,到Galaxy Z Flip 6的显著升级&…

CSS实现表格无限轮播

<div className{styles.tableTh}><div className{styles.thItem} style{{ width: 40% }}>报警名称</div><div className{styles.thItem} style{{ width: 35% }}>开始时间</div><div className{styles.thItem} style{{ width: 25% }}>状态&…

C++学习笔记-基类、派生类与虚函数关系

在C的面向对象编程中&#xff0c;基类&#xff08;Base Class&#xff09;、派生类&#xff08;Derived Class&#xff09;以及虚函数&#xff08;Virtual Functions&#xff09;构成了多态性的基石。这三者之间的关系错综复杂而又紧密相连&#xff0c;它们共同支撑起C中复杂而…

《后端程序猿 · @Value 注释说明》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

定制ESXi 8镜像教程

本文将详细说明从安装 PowerCLI 到定制 ESXi 8 镜像的整个过程。 安装 VMware PowerCLI 1. 打开 PowerShell 打开 PowerShell&#xff1a; 在 Windows 搜索栏中输入 PowerShell&#xff0c;然后右键点击“Windows PowerShell”&#xff0c;选择“以管理员身份运行”。你会看…

【Unity PC端打包exe封装一个并添加安装引导】

Unity PC端打包exe封装一个并添加安装引导 比特虫在线制作ico图标ico图标转换工具 选中打包出来的所有文件和ico图标 右键 使用RAR软件 添加到压缩文件 两个名称要相同 设置完点击确认等待压缩完成 然后就可以使用 Smart Install Maker制作引导安装程序了

过滤出List集合的元素是Person对象,过滤出每个元素非null的name字段得到String类型的集合

import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List people Arrays.asList( new Person(“Alice”, 30), new Person(null, 25), new Person(“Charlie”, 35) ); //…

Thinkphp5实现前后端通过接口通讯基本操作方法

在ThinkPHP5框架中&#xff0c;实现前后端通过接口通讯是一个常见的需求&#xff0c;尤其是在开发RESTful API时。下面是一个基本的步骤指南&#xff0c;用于设置ThinkPHP5来创建API接口&#xff0c;并使前端能够通过HTTP请求与后端进行通讯。 1. 创建API模块 首先&#xff0…

解决Pycharm找不到conda可执行文件

解决&#xff1a; 在 ‘Conda 可执行文件’ 的输入框里面&#xff0c;找到并选中 anaconda\library\bin 路径下的“ conda.bat ” ,再点击‘ 加载环境 ’&#xff0c;即可出现 ‘ 使用现有环境 ’ 的输入框&#xff0c;如图所示。

【实现100个unity特效之8】使用ShaderGraph实现2d贴图中指定部分局部发光效果

最终效果 寒冰法师 火焰法师 文章目录 最终效果寒冰法师火焰法师 素材一、功能分析实现方法基本思路Unity的Bloom后处理为什么关键部位白色&#xff1f;最终结果 二、 新建URP项目三、合并图片四、使用PS制作黑白图片方法一 手动涂鸦方法二 魔棒工具1. 拖入图片进PS&#xff0…

Unity3d打包到Android

本文参考&#xff1a; Unity3D新手教程&#xff1a;如何打包发布到Android_哔哩哔哩_bilibili 一、Unity 打包Android的环境搭建 1、工具安装 Unity Hub已经集成了Android的环境搭建。 选择Add modules 然后安装Android Build Support下的所有工具。 如果各个工具都安装成功…

如何使用 win32com 库

以下是如何使用 win32com 库的基本步骤&#xff1a; 1. 安装 pywin32 win32com 是 pywin32 库的一部分&#xff0c;首先需要安装 pywin32&#xff1a; pip install pywin322. 导入 win32com.client import win32com.client3. 连接到 COM 对象 使用 win32com.client.Dispat…

给Windows系统中注入服务,即windwos守护进程

最近总是在windwos环境下测试nginx&#xff0c;总是需要频繁重启nginx服务。于是考虑有没有可能把nginx加入到系统服务的操作。在网上找了一大堆资料&#xff0c;现在来总结一下&#xff01; 方法1&#xff1a;利用nssm工具实现 这是一个守护进程的软件&#xff0c;可以在win…

FastGPT 知识库搜索测试功能解析(二)

目录 一、代码解析 1.1 searchTest.ts 1.2 controller.ts 本文接上一篇文章FastGPT 知识库搜索测试功能解析 对具体代码进行解析。 一、代码解析 FastGPT 知识库的搜索测试功能主要涉及两个文件,分别是 searchTest.ts 和 controller.ts 文件,下面分别进行介绍。 1.1 se…

关于海康网络摄像头使用VLC或者Opencv拉流有延迟的问题

环境&#xff1a;Windows VLC / Opencv-Python 先说结论&#xff0c;我用VLC或者Pyhton opencv直接拉取海康网络摄像头的rtsp流&#xff0c;会有1-2s延时&#xff0c;特别明显。后来搜到这边文章&#xff0c;解决了问题&#xff1a; 如何降低海康、大华等网络摄像头调用的高…