4.2 索引及其操作

        对数据库中的表进行查询操作时有两种搜索扫描方式,一种是全表扫描,另一种就是使用表上建立的索引进行扫描。

        全表扫描要查找某个特定的行,必须从头开始一一查看表中的每一行,与查询条件做对比,返回满足条件的记录,当表中有很多行时,查询效率非常低;
索引是按数据表中一列或多个列进行索引排序,并为其建立指向数据表记录所在位置的指针。   

        使用索引可以提高系统的性能,加快数据检索的速度。但是使用索引要付出一定的代价。增加存储空间,降低更新表中数据的速度。

索引的分类:

1)普通索引
       最基本的索引类型,没有唯一性之类的限制。创建普通索引的关键字是INDEX。
2)唯一性索引
       和普通索引基本相同,但唯一性索引的索引列的所有值都只能出现一次,即必须是唯一的。创建唯一性索引的关键字是UNIQUE。
3)主键
       是一种唯一性索引,必须指定为primary key。一般在创建表时指定,也可以通过修改表的方式加入主键。每个表只能有一个主键。
4)聚簇索引
       聚簇索引的索引顺序就是数据存储的物理顺序,保证索引值相近的元组所存储的物理位置也相近。一个表只能有一个聚簇索引。
5)全文索引
        MySQL支持全文检索和全文索引。在MysQL中,全文索引的索引类型为fulltext。

索引可以建立在一列上,称为单列索引,一个表可以建立多个单列索引。索引也可以建立在多个列上,称为组合索引、复合索引或多列索引。

4.2.1 创建索引

三种方法:

在已有的表上创建索引可用create index语句和alter table语句;
在创建表的同时创建索引可用create table语句。

1. 使用create index语句创建索引

语法格式:create [ unique ] INDEX index_name
                        on table_name ( col_name [ ( length ) ] [ asc | desc ],... )

其中,length为可选项,用于指定使用列的前length个字符创建索引。

【例4.12】在数据库study中学生表的姓名列上创建一个普通索引 Ⅰ_studentSname。

create index I_studentSname on 学生(姓名);

【4.13】在数据库study中课程表的课程号列上创建一个普通索引Ⅰ_courseCno,要求按课程号字段值降序排列。

create index I_courseCno on 课程(课程号 desc);

【4.14】在数据库study中选课表的成绩列(降序)和学号列(升序)创建一个组合索引Ⅰ_courseGradeSno。

create index I_courseGradeSno on 选课(成绩 desc,学号);

排序时先按成绩列降序排序。若成绩列值相同,再按学号列升序排序。 

2.使用alter table语句创建索引

语法格式:
alter TABLE tab_name
add [ unique | fulltext ] [ index | key ] [ index_name ] (col_name [ ( length ) ] [ asc | desc ],...)  

【例4.15】在数据库study中教师表的tname列创建一个唯一索引Ⅰ_teacherTname。

alter table 教师add unique index I_teacherTname(tname desc);

这里的“tname desc”是指按照汉语拼音对应的英文字母顺序排列;相应的,如果是英文,按照英文字母顺序进行排列。

3. 使用create table语句创建索引

可在创建表的同时创建索引。

语法格式:create TABLE tab_name [ col_name data_type ]
                        [ constraint index_name ] [ unique | fulltext ]
                        [ index | key ] [ index_name ] (col_name [ ( length ) ] [ asc | desc ],...)  

【例4.16】在数据库study中创建新表选课1表,主键为学号和课程号,同时在成绩列上创建普通索引。

create table 选课1 (学号 char(6) not null,课程号 char(4) not null,成绩 tinyint,primary key(学号,课程号),index(成绩));

 

4.2.2 查看表上建立的索引

语法格式:show { index | indexes | keys } { from | in } tb1_name [ { from | in } db_name ]

【例4.17】查看4.16所创建的选课1表的索引。

show index from 选课1;

从以上代码可以看出,在选课1表上建立了3个索引,2个主键索引,索引名称是primary。索引建立在学号和课程号列上,1个普通索引,索引名称是grade,索引建立在grade列上。

4.2.3 删除索引

1. 使用drop index语句。

语法格式:drop INDEX index_name on table_name

【例4.18】删除已建的索引Ⅰ_courseGradeSno。

drop index I_courseGradeSno on 选课;

该语句执行后,选课表上的索引被删除,对选课表无影响,也不影响该表上其他索引。

2. 使用alter table语句删除索引。

语法格式:alter  table tb1_name drop INDEX index_name

【例4.19】删除已建的索引Ⅰ_teacherTname。

alter table 教师drop index I_teacherTname;

 

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

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

相关文章

【AndroidStudio旧版本BUG问题】完美解决运行报错问题Invalid keystore format

由于之前安装的版本导致AndroidStudio 运行报错:Invalid keystore format 在如下截图的路径中删了debug.keystore重新打开Android Studio运行一下就好了!!! 下面介绍各个模块功能: adbkey 是 Android Debug Bridge (AD…

如何处理SSL证书过期问题?

SSL证书是网络安全的重要组成部分,它为网站提供了数据加密、身份验证和增强用户信任等多重保护。然而,SSL证书并非永久有效,其有效期通常为一年。当SSL证书过期时,网站安全性会受到影响,甚至可能面临安全风险。本文旨在…

《2024年网络安全预测:未来规划深度洞察》

2024 年打击网络对手的计划。 阅读报告,了解我们的专家对 2024 年网络安全行业的预测,包括: 攻击者将人工智能融入其行动中,防御者利用它来加强检测和响应 民族国家继续开展网络行动以实现其地缘政治目标 攻击者继续利用零日漏洞…

【UML用户指南】-08-对基本结构建模-图

目录 1、41视图 2、术语和概念 3、结构图 (1)类图(class diagram): (2)构件图:(component diagram) (3)组合结构图:…

会声会影2024官方旗舰版最新版评测

随着数字内容创作的兴起,越来越多的人开始关注视频制作领域。对于初学者和专业人士来说,选择一款适合自己的视频编辑软件是非常重要的。今天,我将为大家全面而深入地评测会声会影2024最新版,从易用性、功能性以及性价比方面进行评…

js 数字精确度

事情的起源: 项目中 填写的赔付金额是小数 传给后端需要 *100 9.87 *100 传给后端后是986.9999999999999 后端直接取整 就变成了9.86了 0.1 0.2 ! 0.3 console.log(0.1 0.2) //0.30000000000000004 console.log(0.1 0.2 0.3) //false1. 数字的存储 浮点数是用…

InfiniGate自研网关实现思路七

25.网关Nginx负载模型配置 通过模拟多个HTTP服务配置到 Nginx 做负载均衡,以学习API网关负载的配置和使用 API 网关是用于支撑分布式 RPC 接口协议转换提供 HTTP 调用的一套服务,那么 API 网关系统就需要可横向扩展来满足系统的吞吐量诉求。所以这里需…

宝塔nginx配置

将跟php有关的注释掉: 添加: #解决vue刷新404问题try_files $uri $uri/ /index.html; location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header…

Day13:vw 和 vh 基本使用

目标:使用 vw 和 less 完成移动端的布局。 一、vw 适配方案 1、vw 和 vh 基本使用 vw 和 vh 是相对单位,相对视口尺寸计算结果。 vw:viewport width(1vw 1/100视口宽度 )vh:lviewport height ( 1vh 1/…

《C++避坑神器·二十六》结构体报重定义错误问题和std::variant同时存储不同类型的值使用方式

1、结构体重定义错误问题: struct person {int age; }p;p是一个已经创建好的对象,相当于struct person p; 如果放在头文件中容易被多个文件包含报重定义错误 typedef struct person {int age; }person;person就是struct person,这时候并没有…

Priority_queue

一、priority_queue的介绍和使用 1.1 priority_queue的介绍 1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 2.优先队列类似于堆, 在堆中可以随时插入元素, 并且只能检索最大堆…

门面模式Api网关(SpringCloudGateway)

1. 前言 当前通过Eureka、Nacos解决了服务注册和服务发现问题,使用Spring Cloud LoadBalance解决了负载均衡的需求,同时借助OpenFeign实现了远程调用。然而,现有的微服务接口都直接对外暴露,容易被外部访问。为保障对外服务的安全…

关于Golang中自定义包的简单使用-Go Mod

1. go env 查看 GO111MODULE 是否为 on,不是修改成on go env -w GO111MODULEon 2 .自定义包的目录格式 3. test.go 内容 package calc func Add(x, y int) int { // 首字母大写表示公有方法return x y }func Sub(x, y int) int {return x - y } 4.生成calc目…

CORSscannerburp的插件jsonp-hunterdnsub

1.CORSscanner 下载地址:CORScanner: Fast CORS misconfiguration vulnerabilities scanner 有时候会出一些警告没引入变量之类的,用pip安装一下就可以了 打开之后是这样的 2.jsonp-hunter 安装jython:Jython的安装和配置环境_jython安装…

前后端分离与实现 ajax 异步请求 和动态网页局部生成

前端 <!DOCTYPE html><!-- 来源 --> <!-- https://cloud.tencent.com/developer/article/1705089 --> <!-- https://geek-docs.com/ajax/ajax-questions/19_ajax_javascript_send_json_object_with_ajax.html --> <!-- 配合java后端可以监听 --&…

最新OpenAI免费API-openai api key获取方式

最近又开始准备LLM 应用开发&#xff0c;要用到api key&#xff0c;才发现过我之前免费发放的额度没了&#xff01;我都没咋用过&#xff0c;痛心&#x1f62d;&#x1f62d;&#x1f62d;&#xff01; 现在 OpenAI 有要求必须充值 5 刀才能使用&#xff0c;问就是没钱&#x…

硕士课程 可穿戴设备之作业一

作业一 第一个代码使用的方法是出自于[1]。 框架结构 如下图&#xff0c;不过根据对代码的解读&#xff0c;发现作者在代码中省去了对SSR部件的实现&#xff0c;下文再说。 Troika框架由三个关键部件组成&#xff1a;信号分解&#xff0c;SSR和光谱峰值跟踪。&#xff08;粗…

游戏缺失xinput1_3.dll怎么修复,总结几种有效的修复方法

在现代科技日新月异的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些错误或问题&#xff0c;其中之一就是找不到xinput13.dll文件&#xff0c;这个问题会导致软件或者游戏无法正常启动运行&#xf…

文件编码概念

文件的读取 open()函数&#xff1a; 打开一个已存在的文件&#xff0c;或者创建一个新文件 open(name,mode,encoding) name:是要打开的目标文件名的字符串&#xff08;可以包含文件所在的具体路径&#xff09; mode:设置打开文件的模式&#xff08;访问模式&#xff09;&am…

C语言—字符函数和字符串函数

1.字符分类函数 C语言中有一系列的函数是专门做字符分类的&#xff0c;也就是一个字符是属于什么类型的字符的。 这些函数的使用都需要包含一个头文件 ctype.h。 例&#xff1a;将一句话中的小写字母改成大写字母。 2.字符转换函数 头文件&#xff1a;ctype.h C语言提供了2…