使用SQL语句管理索引

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: 本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。

使用SQL语句管理索引

1. 创建索引

本次实验环境基于DMS数据库实验室的RDS-SQL Server,前往并登录DMS数据库实验室

如果要在一本书中快速地查找所需的信息,可以利用目录快速地进行查找,而不是一页页地查找。数据库中的索引与书籍中的目录类似,可以让数据库应用程序利用索引快速地查找到所需内容,而不需要扫描整个数据库。在图书中,目录是内容和页码的列表清单。在数据库中,索引就是表中数据和相应存储位置的列表。索引是以表的列为基础的数据库对象,是为了加速对表中数据行的检索而创建的一种单独的存储结构。当 SQL Server 执行查询时,查询优化器评估可用于检索数据的每种方法,然后选择最有效的方法。可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。扫描表时会有许多磁盘 I/O 操作,并占用大量资源。查询优化器使用索引时,搜索索引键列,查找到所需查询行的存储位置,然后从该位置提取匹配行。通常,搜索索引比搜索表要快得多,这是因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。

使用SQL语句创建索引、修改索引和删除索引的具体操作步骤如下:

创建索引。

使用SQL语句创建所以的基本语法格式:

CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name ON {table_or_view_name}(column[ASC|DESC][,…n])}

参数说明:

UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。省略该参数则表示创建的索引为非唯一索引。 CLUSTERED:用于指定创建的索引为聚集索引。 NOCLUSTERED:用于指定创建的索引为非聚集索引,为默认值。 index_name:索引名称。索引名称在表或视图中必须唯一,但在数据库中不必唯一。索引名称必须符合标识符的命名规则。 table_or_view_name:要建立索引的表或视图的名称。 column:索引中包含的列的名称。指定两个或多个索引,可以为指定的列组合值创建复合索引。 ASC | DESC:用于指定某个索引列以升序或降序方式排序。默认设置为ASC。

示例:

在SQL Console页签,输入如下在students表的id列上创建唯一索引index_id的SQL语句,单击执行,然后在执行确认对话框中,单击直接执行

说明:本例在students表上创建非聚集唯一索引,该索引将自动检查表中id列是否有重复的值。

CREATE UNIQUE INDEX index_id ON students(id)

区域,单击 图标刷新,选择[dms].students>索引,您可以查看到新增的唯一索引index_id。

修改索引。

使用 ALTER INDEX 语句可以修改索引的定义,其基本语法格式:

ALTER INDEX{index_name|ALL} ON { REBUILD [[WITH([,…n])] |[ PARTITION = partition_number [WITH( [,…n])]]] | DISABLE | REORGANIZE [PARTITION = partition_number]

[WITH(LOB_COMPACTION= {ON|OFF})] | SET([,…n]) }[;]

参数说明:

index_name:索引的名称。 ALL:指定与表或视图相关联的所有索引。 object:索引所基于的表或视图的名称。 REBUILD:指定将使用相同的列、索引类型、唯一性属性和排序顺序重新生成索引。 rebuild_index_option:对填充因子等索引选项的重新设置。 PARTITION=partition_number:指定只重新生成或重新组织索引的一个分区。 single_partition_rebulid_index_option:单个分区重建索引参数。 DISABLE:将索引标记为禁用,从而不能由数据库引擎使用。 REORGANIZE:指定将重新组织的索引页级。 LOB_COMPACTION={ON | OFF}:指定压缩所有包括大型对象(LOB)数据的页。 set_index_option:指定不重新生成或重新组织索引的索引选项。

删除索引。

使用 DROP INDEX 语句可以删除当前数据库中一个或多个索引,其语法格式:

DROP INDEX {table_name | view_name}.index_name[…,n]

示例:

在SQL Console页签,输入如下删除students表上的index_id索引的SQL语句,单击执行,然后在执行确认对话框中,单击直接执行

DROP INDEX students.index_id

区域,单击 图标刷新,选择[dms].students>索引,您可以查看到students表上的index_id索引已被删除。


2. 实验作业


表1 student_info表的数据

学号

姓名

性别

出生日期

家族住址

0001

张青平

2000-10-01

衡阳市东风路77号

0002

刘东阳

1998-12-09

东阳市八一北路33号

0003

马晓夏

1995-05-12

长岭市五一路763号

0004

钱忠理

1994-09-23

滨海市洞庭大道279号

0005

孙海洋

1995-04-03

长岛市解放路27号

0006

郭小斌

1997-11-10

南山市红旗路113号

0007

肖月玲

1996-12-07

东方市南京路11号

0008

张玲珑

1997-12-24

滨江市新建路97号

表2 curriculum表的数据

课程编号

课程名称

学分

0001

计算机应用基础

2

0002

C语言程序设计

2

0003

数据库原理及应用

2

0004

英语

4

0005

高等数学

4

表3 grade表的数据

学号

课程编号

分数

0001

0001

80

0001

0002

91

0001

0003

88

0001

0004

85

0001

0005

77

0002

0001

73

0002

0002

68

0002

0003

80

0002

0004

79

0002

0005

73

0003

0001

84

0003

0002

92

0003

0003

81

0003

0004

82

0003

0005

75

使用SQL语句ALTER TABLE分别删除studentsdb数据库的student_info表、grade表、curriculum表的主键索引。

使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx。

使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。

使用SQL语句为grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_sid_cid_idx。

查看grade表上的索引信息。

使用SQL语句删除索引grade_idx。再次查看grade表上的索引信息。


实验链接:https://developer.aliyun.com/adc/scenario/01f4686f1f6048098d9323671db9b41c

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
1月前
|
SQL 存储 关系型数据库
如何巧用索引优化SQL语句性能?
本文从索引角度探讨了如何优化MySQL中的SQL语句性能。首先介绍了如何通过查看执行时间和执行计划定位慢SQL,并详细解析了EXPLAIN命令的各个字段含义。接着讲解了索引优化的关键点,包括聚簇索引、索引覆盖、联合索引及最左前缀原则等。最后,通过具体示例展示了索引如何提升查询速度,并提供了三层B+树的存储容量计算方法。通过这些技巧,可以帮助开发者有效提升数据库查询效率。
133 2
|
1月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
2月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
558 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
1月前
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引:详细技巧与方法
在数据库管理中,索引是提高SQL查询性能的重要手段
|
2月前
|
存储 关系型数据库 MySQL
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
覆盖索引、前缀索引、索引下推、SQL优化、EXISTS 和 IN 的区分、建议COUNT(*)或COUNT(1)、建议SELECT(字段)而不是SELECT(*)、LIMIT 1 对优化的影响、多使用COMMIT、主键设计、自增主键的缺点、淘宝订单号的主键设计、MySQL 8.0改造UUID为有序
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
|
2月前
|
SQL 存储 索引
SQL Server的Descending Indexes降序索引
【9月更文挑战第21天】在SQL Server中,降序索引允许指定列的排序顺序为降序,可显著优化涉及降序排序的查询性能,特别是在复合索引中。通过创建降序索引,可以更高效地满足特定业务需求,如按交易时间降序获取最新记录。然而,使用时需考虑查询频率、数据分布及维护成本,以确保最佳性能。
|
1月前
|
SQL 存储 关系型数据库
SQL默认索引是什么:深入解析与技巧
在SQL数据库中,索引是一种用于提高查询性能的重要数据结构
|
1月前
|
SQL 存储 关系型数据库
SQL默认索引是什么
在SQL数据库中,索引是一种用于提高查询性能的数据结构
|
1月前
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引
在数据库管理和优化过程中,确认SQL查询是否使用了索引是一个至关重要的步骤
|
1月前
|
SQL 关系型数据库 MySQL
如何确认SQL查询是否使用了索引:详细步骤与技巧
在数据库管理和优化中,确认SQL查询是否有效利用了索引是提升性能的关键步骤
下一篇
无影云桌面