实验六 索引的创建和使用(课件)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六索引的创建和使用

建议学时:2

实验目的:

1)了解索引的概念、优点及分类。

2)掌握在SQL Server Management Studio 中创建、修改和删除索引的操作。

3)掌握使用T-SQL语句创建、修改和删除索引的操作。

实验内容及步骤:

(一)索引的概念

数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。

索引的优点:

1.可以大大加快数据检索速度。

2.通过创建唯一索引,可以保证数据记录的唯一性。

3.在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。

4.使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。

5.可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。

索引的分类:

1.聚集索引

聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储,表中的物理顺序和索引中行的物理顺序是相同的。

2.非聚集索引

非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引包含索引键值和指向表数据存储位置的行定位器。可以对表或索引视图创建多个非聚集索引。设计非聚集索引是为了改善经常使用的、没有建立聚集索引的查询的性能。

3.唯一索引

确保索引键不包含重复的值。聚集索引和非聚集索引都可以是唯一索引,这种唯一性与主键约束是相关联的,在某种程度上,主键约束等于唯一性的聚集索引。

(二)SSMS中索引的管理

1.新建索引

【例1】为GZGL数据库中的employee表新建非聚集索引i_emp_age,要求按emp_age 升序完成。

①在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。右键单击【索引】,然后单击【新建索引】→【非聚集索引】,如图3-45所示。

②出现的【新建索引】对话框,如图3-46所示。在【索引名称】文本框中输入新建索引的名称i_emp_age,在下面的复选框中可设定是否唯一。

③在【索引键列】可使用旁边的【添加】按钮添加要设定索引的属性,弹出选择列对话框,如图3-47所示,选择emp_age,然后单击【确定】按钮。

④返回【新建索引】对话框,在如图3-48所示的【索引键列】中可设置【排序次序】等属性,最后单击“确定”按钮,即可生成新的索引。

如果需要建立基于多个属性的复合索引,可在步骤③中添加多个属性。

图3-45 新建非聚集索引

图3-46 新建索引窗口

图3-47 选择列窗口

图3-48 设置索引列属性

2. 查看和修改索引

在【对象资源管理器】中,展开指定的服务器、数据库和要创建索引的表。右键单击要修改的索引,然后单击【属性】,在出现的【索引属性】对话框中,可以修改索引的大部分设置。

要修改索引的名称,右键单击要修改的索引,然后单击【重命名】,然后直接在【索引名】文本框中输入新的索引名称替换原来的索引名称。

3. 删除索引

在【对象资源管理器】中,右键单击要删除的索引,单击【删除】按钮,即可。

(三)使用T-SQL语句管理索引

1.创建索引

语法:CREATE [UNIQUE] [CLUSTERED│NONCLUSTERED]INDEX index_name ON {table│view} (column [ASC│DESC] [,…n])

【例2】为表employee创建一个非聚集索引,索引字段为emp_name,索引名为i_emp_name。

use gzgl

create index i_emp_name on employee(emp_name)

【例3】新建一个表,名称为temp,为此表创建一个惟一聚集索引,索引字段为temp_number,索引名为i_temp_number。

use gzgl

create table t_temp

(temp_number int,

temp_name char(10),

temp_age int)

create unique clustered index i_temp_number

on t_temp(temp_number)

【例4】为表employee创建一个复合索引,使用emp_sex的升序和emp_age的降序排列,索引名为i_employee。

create index i_employee on s(emp_sex,emp_age desc)

2.查看索引

使用系统存储过程sp_helpindex 查看索引信息,语法格式如下:

sp_helpindex [@objname=] ‘name’

【例5】查看employee表的索引信息。

sp_helpindex employee

3.重命名索引

使用系统存储过程sp_rename修改索引名称,语法格式如下:

sp_rename[@objname=] ‘object_name’,[@newname=] ‘new_name’

[,[@objtype=] ‘object_type’]

【例6】将s表中的索引i_employee的名称改为i_s_sexandage。

use student

sp_rename ‘s.i_employee’,’i_s_sexandage’,’index’

4.删除索引

语法格式如下:

drop index ‘table.index│view.index’[,…n]

【例7】删除表s中的索引i_s_sexandage。

drop index s. i_s_sexandage

实验习题:

(1)为s表创建一个复合索引i_sdept_sno,以院系升序、学号降序。

(2)查看表s中的索引信息。

(3)将索引i_sdept_sno的名称改为i_s。

(4)删除索引i_s。

(5)为课程表创建一个唯一聚集索引i_cname,以课程名升序。如果不能执行,请分析

说明原因。

相关文档
最新文档