资源简介 (共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-2Indexes Use Key Values to Locate Data(根据索引键查找定位数据行)Data Pages(数据页)…Index Pages(索引页)任务准备-什么是索引4-3SQL 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 表名 REORGANIZEALTER INDEX 索引名 ON 表名 DISABLEDROP INDEX 索引名 ON 表名任务准备-索引的优缺点优点加快访问速度加强行的唯一性缺点带索引的表在数据库中需要更多的存储空间操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新任务准备-创建索引的指导原则请按照下列标准选择建立索引的列。该列用于频繁搜索该列用于对数据进行排序请不要使用下面的列创建索引:列中仅包含较少的唯一值(即大部分属性值重复,如性别“男”“女”)很少被查询的列定义为 text、image等 数据类型的列表中仅包含几行。为小型表创建索引可能不太划算,因为SQL Server在索引中搜索数据所花的时间比在表中逐行搜索所花的时间更长1. SSMS方式创建索引任务演示2. T-SQL语句创建索引任务演示CREATE UNIUQE NONCLUSTERED INDEX Index_SName0ON Student (SName ASC)说明:NONCLUSTERED、ASC都可以省略,因为默认情况下创建的都是非聚集索引和升序排列的。思考:能否在一个表中创建多个非聚集索引?3. 查看Student学生表的Index_SName索引信息任务演示EXEC sp_helpindex Student4. 维护索引任务演示--重新生成索引,语句如下:ALTER INDEX Index_SName on Student REBUILD--重新组织索引,语句如下:ALTER INDEX Index_SName on Student REORGANIZE--禁用索引,语句如下:ALTER INDEX Index_SName on Student DISABLE5. 使用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。 展开更多...... 收起↑ 资源预览