5.1 创建与使用索引 课件(共19张PPT)《 数据库技术及应用(SQL Server 2019)》同步教学(机械工业出版社)

资源下载
  1. 二一教育资源

5.1 创建与使用索引 课件(共19张PPT)《 数据库技术及应用(SQL Server 2019)》同步教学(机械工业出版社)

资源简介

(共19张PPT)
5.1 创建与使用索引
提纲
提纲
什么是索引
创建和管理索引
任务描述
1.创建索引
1)为Student表的SName列创建一个唯一非聚集索引Index_SName,按SName降序排列。
2)使用T-SQL语句为Student表的SName列创建一个唯一非聚集索引Index_SName,按SName升序排列。
2.维护索引
查看Student学生表的Index_SName索引信息。
3.维护索引
当数据更改后,根据需要完成重新生成索引、重新组织索引或者禁用索引等操作,以Index_SName为对象完成以上操作。
任务准备-什么是索引4-1
数据的访问的两种方法
扫描表中所有的数据页——称为表扫描
开始于表的起点
一页页地扫描表中的所有行
提取符合查询标准的行
使用索引
通过索引找到查询所请求的列
汉语字典中的汉字按页存放,一般都有汉语拼音目录(索引)、偏旁部首目录等
我们可以根据拼音或偏旁部首,快速查找某个字词
任务准备-什么是索引4-2
Indexes Use Key Values to Locate Data
(根据索引键查找定位数据行)
Data Pages(数据页)

Index Pages(索引页)
任务准备-什么是索引4-3
SQL Server中的数据也是按页( 8KB )存放。
索引:是SQL Server编排数据的内部方法。它为SQL Server提供一种方法来编排查询数据 。
索引页:数据库中存储索引的数据页;索引页类似于汉语字(词)典中按拼音或笔画排序的目录页。
索引的作用:通过使用索引,可以大大提高数据库的检索速度,改善数据库性能。
任务准备-什么是索引4-4
任务准备-索引类型
唯一索引:唯一索引不允许两行具有相同的索引值。
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空。
按照存储方式分为:
聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个。
非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个。
任务准备-创建和管理索引4-2
通过T-SQL方式创建索引的语法
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED]
INDEX 索引名
ON 表名(列名[ASC|DESC][,…n])
UNIQUE: 用来指定创建的索引是唯一索引。
CLUSTERED| NONCLUSTERED:指定被创建索引的类型。使用CLUSTERED创建聚集索引,使用NONCLUSTERED创建非聚集索引。
任务准备-创建和管理索引4-3
通过T-SQL方式管理索引
ALTER INDEX 索引名 ON 表名 REBUILD
重新生成索引
重新组织索引
禁用索引
删除索引
ALTER INDEX 索引名 ON 表名 REORGANIZE
ALTER INDEX 索引名 ON 表名 DISABLE
DROP INDEX 索引名 ON 表名
任务准备-索引的优缺点
优点
加快访问速度
加强行的唯一性
缺点
带索引的表在数据库中需要更多的存储空间
操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新
任务准备-创建索引的指导原则
请按照下列标准选择建立索引的列。
该列用于频繁搜索
该列用于对数据进行排序
请不要使用下面的列创建索引:
列中仅包含较少的唯一值(即大部分属性值重复,如性别“男”“女”)
很少被查询的列
定义为 text、image等 数据类型的列
表中仅包含几行。为小型表创建索引可能不太划算,因为SQL Server在索引中搜索数据所花的时间比在表中逐行搜索所花的时间更长
1. SSMS方式创建索引
任务演示
2. T-SQL语句创建索引
任务演示
CREATE UNIUQE NONCLUSTERED INDEX Index_SName0
ON Student (SName ASC)
说明:NONCLUSTERED、ASC都可以省略,因为默认情况下创建的都是非聚集索引和升序排列的。
思考:能否在一个表中创建多个非聚集索引?
3. 查看Student学生表的Index_SName索引信息
任务演示
EXEC sp_helpindex Student
4. 维护索引
任务演示
--重新生成索引,语句如下:
ALTER INDEX Index_SName on Student REBUILD
--重新组织索引,语句如下:
ALTER INDEX Index_SName on Student REORGANIZE
--禁用索引,语句如下:
ALTER INDEX Index_SName on Student DISABLE
5. 使用DROP INDEX语句删除Student表的Index_SName0索引
任务演示
DROP INDEX Index_SName0 ON Student
注意:
(1)当索引所在的数据表或视图被删除时,相关的所有索引同时被删除。
(2)如果索引是由系统自动创建的,例如主键列和唯一列的索引,则只能通过删除该列的主键约束和唯一约束来删除索引。
(3)如果要删除已被关联列的索引,先要从数据库中删除相应的关联关系。
(4)如果要删除数据表或视图中的所有索引,先删除非聚集索引后删除聚集索引。
任务训练
1)按照任务实施过程的要求完成各子任务并检查结果。
2)创建索引:为BookDB图书借阅数据库Reader表的RName列创建一个唯一非聚集索引Index_RName,按RName升序排列。
3)维护索引:查看BookDB图书借阅数据库Reader表的Index_RName索引信息,重新生成、重新组织、禁用等修改Index_RName索引。
4)删除索引:删除BookDB图书借阅数据库Reader表上索引 Index_RName。

展开更多......

收起↑

资源预览