实验六 索引的创建和使用(课件)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,以课程名升序。如果不能执行,请分析
说明原因。