MySQL之索引及简单运用

news2025/3/13 0:53:14

索引:

什么是索引

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

  在数据库管理系统中,索引是对数据库表中一列或多列的值进行排序的一种结构,可以极大地提高数据检索的效率,减少数据库的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.coloradmin.cn/o/1948435.html

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

相关文章

Servlet 3.0的新特征

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhlServlet 3.0概述 Servlet 3.0规范是在2009年随着Java EE 6的发布而推出的。它引入了一系列新特性和改进,旨在简化Web应用的开发和部署过程,并提高Web应用的性能和可扩展性。Servlet 3.0的发布标…

C++ | Leetcode C++题解之第279题完全平方数

题目: 题解: class Solution { public:// 判断是否为完全平方数bool isPerfectSquare(int x) {int y sqrt(x);return y * y x;}// 判断是否能表示为 4^k*(8m7)bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7;}int numSquares(i…

河南萌新联赛2024第(二)场---G. lxy的通风报信

题目描述 在 nnn mmm 的平面星球里&#xff08; 5<n5 < n5<n&#xff0c; m<1000m < 1000m<1000 &#xff09;&#xff0c;存在着 aaa 支军队 ( 2<a<502 < a < 502<a<50 ) , 和 bbb 支驻扎在地图中的敌军 ( 0<b<n∗m−a0 < b &…

Python写UI自动化--playwright(通过UI文本匹配实现定位)

本篇简单拓展一下元素定位技巧&#xff0c;通过UI界面的文本去实现定位 目录 匹配XPath 匹配文本元素 .count()统计匹配数量 处理匹配文本返回多个元素 1、使用.nth(index)选择特定元素: 2、获取所有匹配的元素并遍历: 3、错误处理: 匹配XPath 比如我们要定位到下图的…

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中&#xff0c;我们写了一些注释&#xff0c;如下所示&#xff1a; 但是再次打开注释会变成乱码&#xff0c;如下所示&#xff1a; 那么如何解决呢&#xff1f; 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现TTAO-Transformer-LSTM多变量回归预测&#xff0c;三角拓扑聚合…

【C++进阶学习】第八弹——红黑树的原理与实现——探讨树形结构存储的最优解

二叉搜索树&#xff1a;【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 AVL树&#xff1a; ​​​​​​【C进阶学习】第七弹——AVL树——树形结构存储数据的经典模块-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经学习了二叉搜索树和…

Sentinel限流规则详解

上一期教程讲解了 Sentinel 的快速入门&#xff1a;Sentinel快速入门&#xff0c;这一期主要讲述 Sentinel 的限流规则 簇点链路 簇点链路就是项目内的调用链路&#xff08;Controller -> Service -> Mapper&#xff09;&#xff0c;链路中被监控的每个接口就是一个资源…

论文阅读【检测】:商汤 ICLR2021 | Deformable DETR

文章目录 论文地址AbstractMotivation技术细节多尺度backbone特征MSDeformAttention 小结 论文地址 Deformable DETR 推荐视频&#xff1a;bilibili Abstract DETR消除对目标检测中许多手工设计的组件的需求&#xff0c;同时表现出良好的性能。然而&#xff0c;由于Transfor…

微服务案例搭建

案例搭建 使⽤微服务架构的分布式系统,微服务之间通过⽹络通信。我们通过服务提供者与服务消费者来描述微服 务间的调⽤关系。 服务提供者&#xff1a;服务的被调⽤⽅&#xff0c;提供调⽤接⼝的⼀⽅ 服务消费者&#xff1a;服务的调⽤⽅&#xff0c;依赖于其他服务的⼀⽅ 我…

pyenv-win | python版本管理,无需卸载当前版本

系统&#xff1a;windows&#xff0c;且已安装git。 使用 pyenv-win 在Windows中管理多个python版本&#xff0c;而无需卸载当前版本。安装步骤如下&#xff1a; 安装 pyenv-win 1. 安装 Git 和 pyenv-win: git clone https://github.com/pyenv-win/pyenv-win.git %USERPRO…

河南萌新联赛2024第(二)场:南阳理工学院

河南萌新联赛2024第&#xff08;二&#xff09;场&#xff1a;南阳理工学院 2024.7.24 13:00————15:00 过题数5/11 补题数6/11 国际旅行Ⅰ 国际旅行Ⅰ 小w和大W的决斗。 A*BBBB “好”字符 水灵灵的小学弟 lxy的通风报信 狼狼的备忘录 重生之zbk要拿回属于他的一切 这是签…

THS配置keepalive(yjm)

启动完THS管理控制台和THS后&#xff0c;登录控制台&#xff0c;进入实例管理》节点管理&#xff0c;可以分别使用界面配置和编辑配置设置长连接。 1、界面配置 点击界面配置》集群设置&#xff0c;启用长连接&#xff0c;设置长连接数、最大请求数和超时时间。 2、编辑配置 …

文章自然润色 API 数据接口

文章自然润色 API 数据接口 ai / 文本处理 基于 AI 的文章润色 专有模型 / 智能纠错。 1. 产品功能 基于自有专业模型进行 AI 智能润色对原始内容进行智能纠错高效的文本润色性能全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 / v1.3&#xff09;&#xff1b;全面兼容…

12.Spring事务和事务传播机制

文章目录 1.为什么需要事务2.Spring 中事务的实现2.1 MySQL 中的事务使⽤2.2 Spring 编程式事务2.3 Spring 声明式事务&#xff08;自动&#xff09;2.3.1 Transactional 作⽤范围2.3.2 Transactional 参数说明2.3.3 注意事项2.3.4 Transactional ⼯作原理 3.事务隔离级别3.1 事…

Python 爬虫 instagram api获取用户主页tagged media标记内容

此instagramAPI接口可获取指定用户主页tagged media标记内容 详细采集页面参考下图及链接&#xff0c;如有需要&#xff0c;可通过文末链接联系我们。 https://www.instagram.com/javan/tagged/ 请求API http://api.xxxx.com/ins/user/tagged?user_id18527&count12&…

网络原理_初识

目录 一、局域网LAN 二、广域网WAN 三、网络通信基础 3.1 IP地址 3.2 端口号 3.3 协议 3.4 五元组 3.5 OSI七层模型 3.6 TCP/IP五层模型 3.7 网络设备所在分层 3.8 封装和分用 总结 一、局域网LAN 局域网&#xff0c;即 Local Area Network&#xff0c;Local 即标…

基于opencv[python]的人脸检测

1 图片爬虫 这里的代码转载自&#xff1a;http://t.csdnimg.cn/T4R4F # 获取图片数据 import os.path import fake_useragent import requests from lxml import etree# UA伪装 head {"User-Agent": fake_useragent.UserAgent().random}pic_name 0 def request_pic…

FL Studio 21.2.3.4004中文直装版及FL Studio 204如何激活详细教程

在数字化音乐制作的浪潮中&#xff0c;FL Studio 24.1.1.4234的发布无疑又掀起了一股新的热潮。这款由Image-Line公司开发的数字音频工作站&#xff08;DAW&#xff09;软件&#xff0c;以其强大的功能和易用的界面&#xff0c;赢得了全球无数音乐制作人的青睐。本文将深入探讨…

ELK日志收集之多文件提取文件名和日志时间

需求&#xff1a;多个设备的日志同时保存在一台服务器上&#xff0c;日志文件的文件名是设备的ID&#xff0c;需要将多个文件提取文件名作为最终的筛选字段&#xff0c;同时提取日志中的时候日期时间替换系统的timestamp filebeat配置&#xff1a; filebeat.inputs:- type:…